2016-09-05 8 views
-1

Ich habe eine jQuery-Funktion, die ein Argument (sagen wir Arg) nimmt, das eine Zahl ist.Onclick ruft Funktion mit erhöhtem Argumentwert auf

Ich habe auch eine Schaltfläche, die die Funktion aufruft, wenn auf die Schaltfläche geklickt wird.

Wie bekomme ich die Schaltfläche, um die Funktion mit einer zunehmenden Arg-Zahl mit jedem Klick aufzurufen?

z. erste Schaltfläche klicken myFunction(1), zweite Schaltfläche klicken ruft ruft myFunction(2) usw.

ich auf die Schaltfläche klicken myFunction(arg) aufrufen wollen, wo arg die Anzahl der Klick ist.

myFunction selbst ist kein Zähler, es hat seinen eigenen Code.

html:

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

js:

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

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

Ich möchte sinAjax(click number+100) auf jeder aufzurufen

klicken

Aktualisiert Code:

html:

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

js:

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

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

Das Problem, das ich mit Blick auf bin, ist, dass Sie die Taste nur einmal funktioniert, dann aufeinanderfolgende Klicks geben Sie mir die gleichen Werte.

+0

Bitte zeigen Sie uns, was Sie versucht haben. Es wird erwartet, dass SO-Fragen [Suche und Forschung] (http://stackoverflow.com/help/dont-ask) – Praveen

+0

in Bezug darauf zeigen, dass der bearbeitete Code aus dem Code stammt, den ich als Lösung gepostet habe, aber Sie haben ihn geändert. Es ist äußerst vorteilhaft, kein Inline-Skript zu haben (zB: den onclick, den Sie der Schaltfläche hinzugefügt haben), da Sie jQuery- und Event-Handler haben. Viel besser, die Funktion zu ändern, die ich hatte, und da es bereits einen Event-Handler gab, um die Funktion auszulösen - Sie brauchen den Inline-onclick-Handler nicht. – gavgrif

+0

Die einzigen Änderungen, die an Ihrem ursprünglichen Code erforderlich sind, um ihn zum Laufen zu bringen, sind (a) den jQuery-Click-Handler richtig zu binden: '$ ('# newData') .click (setValue);' und dann (b) 'sinAjax (newVal) 'innerhalb Ihrer' setValue() 'Funktion und (c) entfernen Sie das inline' onclick' Attribut. – nnnnnn

Antwort

0

Sie haben viele Möglichkeiten, um diese Aufgabe zu erfüllen: den steigenden Wert in ein Daten-attr Attribut zu speichern oder einfach:

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

den Wert der Taste 0 einen (oder ein Datum atttribute verwenden), Holen Sie die Funktion, um den Wert der Schaltfläche zu erhalten., erhöhen Sie sie und stellen Sie dann den Wert auf den neuen Wert ein. Auf diese Weise ist es egal, ob Sie die Funktion programmtically oder über den Klick auslösen - die Aktion ist die gleiche

$(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) 
} 
Verwandte Themen