2016-06-10 4 views
-1

ich so etwas wie dies vor haben:Javascript - Parameter ändern Funktion ONCLICK dynamisch

<a href="javascript:;" onclick="save_todo(10, 12, 0);" >Save todo</a> 

in JavaScript Meine Funktion wie folgt aussieht:

function save_todo(id_user, id_todo, id_check){ 

dataString = "q1="+id_user+"&q2="+id_todo; 


    if(id_check == 0){ 
    // Add to favorite 
    jQuery.ajax({ 
     type: "POST", 
     url: "todo_submit.php", 
     dataType: 'html', 
     data : dataString, 
     cache: false, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      console.log("erreur add"); 
     }, 
     success: function (html) { 
      console.log("sucess add"); 
     } 
    }); 
    } else { 
// Remove to favorite 
    jQuery.ajax({ 
     type: "POST", 
     url: "todo_submit_delete.php", 
     dataType: 'html', 
     data : dataString, 
     cache: false, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      console.log("erreur remove"); 
     }, 
     success: function (html) { 
      console.log("sucess remove"); 
     } // success 
    }); // ajax 
    } 
    console.log("function call"); 
} 

Ist es möglich, Parameter der Funktion save_todo onClick zu ändern und es funktioniert? Ich möchte nur den letzten Parameter auf 1 ändern, wenn es 0 ist, und umgekehrt.

Danke!

Antwort

0

Wenn Sie 1 übergeben möchten, können Sie einfach den Wert auf 1 ändern: ‚Save todo‘

Aber ich verstehe, wollen Sie diesen Wert auf einer Bedingung basiert ändern. Dafür können Sie zunächst den Wert dieses Parameters gesetzt und dann mit diesem Parameter nennen:

<a href="#" id="save-to-do">Save todo</a> 

$("#save-to-do").on("click", function(e){ 
    e.preventDefault(); 
    var paramValue = 0; 

    // if(some condition) 
     // paramValue = 1; 

    save_todo(10, 12, paramValue); 
});//click 

Basierend auf dem Code, den Sie verwenden, hier ist der korrigierte Code:

$("#identification_sct a.btn").on('click', function(e){ 
    var id_check = $(this).attr("data-id-check"); 

    save_todo(10, 12, id_check); 

    if(id_check == 0) 
     { id_check = 1; } 
    else{ id_check = 0; } 
    $(this).attr("data-id-check", id_check); 
} 

Es gibt einige falsche Logik waren in deinem Code.

+0

Es ist Arbeit, ich dachte nicht, die Funktion direkt auf das Click-Ereignis aufzurufen. Vielen Dank @Mike – Nobtis

+0

@Nobtis Wenn Sie in Ihrem Skript einen Klick-Handler binden, müssen Sie ihn nicht über das Attribut 'onclick' hinzufügen. In der Tat sollten Sie es vermeiden, es als Attribut zu schreiben, Sie können sehen, dass Ereignishandler im Skript direkt definiert werden, viel sauberer und kontrollierbarer. –