2016-09-05 4 views
-1

У меня есть функция jQuery, которая принимает аргумент (допустим, arg), который является числом.Onclick вызывает функцию с увеличенным значением аргумента

У меня также есть кнопка, которая вызывает функцию при нажатии кнопки.

Как я могу заставить кнопку вызывать функцию с увеличением числа аргументов при каждом нажатии?

E.g. первый щелчок кнопки вызывает myFunction(1), второй щелчок кнопки вызывает myFunction(2) и т.д.

Я хочу кнопку нажмите, чтобы вызвать myFunction(arg), где arg является количество мыши.

myFunction сам по себе не счетчик, он делает собственный код.

HTML:

<button id='newData' value=0 onclick='sinAjax()'>New Data</button> 

ЯШ:

$(document).ready(function() 
{ 
    setValue(); 
    $('#newData').onclick('click', setValue); 
}); 

function setValue() 
{ 
    var val = parseInt($('#newData').val()); 
    var newVal = val +=100; 
    $('#newData').val(newVal); 
} 

Я хочу, чтобы вызвать sinAjax(click number+100) на каждый клик

Обновленный код:

HTML:

<button id='newData' value=0 >New Data</button> 

ЯШ:

$(document).ready(function() { 
    setValue(); 
    $('#newData').click(function() { 
     sinAjax(val); 
    }) ;  
}) ; 

function setValue() { 
    val = parseInt($('#newData').val()); 
    var newVal = val +=100; 
    $('#newData').val(newVal); 
} 

Проблема я столкнулся в том, что кнопка работает только один раз, а затем последовательные щелчки дают мне одни и те же значения.

+0

Пожалуйста, покажите нам, что вы пробовали. Ожидается, что вопросы SO будут показаны [поиск и исследование] (http://stackoverflow.com/help/dont-ask) – Praveen

+0

с уважением - отредактированный код из кода, который я опубликовал в качестве решения, но вы его модифицировали. Крайне лучше НЕ иметь встроенный скрипт (например: onclick, который вы добавили к кнопке), так как у вас есть jQuery и обработчики событий. Намного лучше изменить функцию, которая у меня была, и поскольку уже был обработчик события для запуска функции - вам не нужен встроенный обработчик onclick. – gavgrif

+0

Единственные изменения, необходимые вашему исходному коду, чтобы заставить его работать: (a) правильно привязать обработчик jQuery: '$ ('# newData'). Click (setValue);' и затем (b) вызвать 'sinAjax (newVal) 'из функции' setValue() 'и (c) удалить встроенный атрибут onclick. – nnnnnn

ответ

0

У вас есть много способов для выполнения этой задачи: хранящее все большее значение в атрибут данных атра или просто:

var counter = 0; 
$(element).on('click', function() { 
    myFunction(counter++); 
}); 
0

Установите значение кнопки на 0 (или использовать atttribute данных), получить функцию, чтобы получить значение кнопки., увеличить его, а затем установить значение в новое значение. Таким образом, это не имеет значения, вызвать ли функцию programmtically или с помощью щелчка - действие такого же

$(document).ready(function(){ 
 
setValue(); 
 
$("#myButton").on('click',setValue) 
 
    }) 
 
    
 
function setValue(){ 
 
    var val = parseInt($("#myButton").val()); 
 
    var newVal = val += 1; 
 
    $("#myButton").val(newVal) 
 
    console.log("New Value is: " + newVal) 
 
    } 
 
    
 
        
 
        
 
    
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button type ="button" value="0" id="myButton">Click Me</button>

0
<button clickTime="1" onclick="myFunction(this.getAttribute('clickTime'),this)">遁地龙卷风</button> 
function myFunction(time,target) 
{ 
    alert(time) 
    target.setAttribute('clickTime',+time+1) 
} 
Смежные вопросы