2017-05-19 15 views
0

まあ、私はどこでもそれを行う方法を探してきました。JavaScriptでonclickを設定するときに引数を渡す

クリックしたときに表の行を削除するはずのボタンのリストがあります。これらのテーブルの行のいくつかは、ユーザによって追加または削除することができますので、私は、HTMLファイルに直接onclickのを書き込むことはできませんので、私はJavaScriptでそれらを追加しました:

function setOnclick() { 

     var deleteBtn = document.getElementsByClassName("delete-btn"); 

     for(var i = 0; i < deleteBtn.length; ++i){ 
     deleteBtn[i].onclick = deleteArticle(/*(this)*/); 
     } 
    } 

    function deleteArticle(article){ 
     /* delete the article row from table */ 
    } 

今、私はので、私ならば任意の引数を置くことができません関数の最後にput()を呼び出すだけで、関数を呼び出すのではなく、関数を起動します。

PS:これは割り当てなので、私はあなたがイベントリスナーに引数を渡したい場合は、.bind()を使用することができ

... 
deleteBtn[i].onclick = deleteArticle 
... 

function deleteArticle(){ 
this.parentNode.removeChild(this); 
} 

答えて

0

を置くべきjQuery.1

+0

それは私がそれを試して、あなたにフィードバックを与えることはかなり良いように見えます!どうもありがとう ! – LudoB99

+0

これは完璧に動作し、私のコードで別のエラーに気づかせてくれました。 – LudoB99

+0

@ LudoB99:これは '.bind()'を無意味に使用しています。 'deleteBtn [i] .onclick = deleteArticle;を実行すると、avrilの回答表示がまったく同じことをしますが、より効率的です。 –

0

を使用する権限がありませんよ:

function setOnclick() { 
 
    var deleteBtn = document.getElementsByClassName("delete-btn"); 
 
    for(var i = 0; i < deleteBtn.length; ++i){ 
 
    deleteBtn[i].onclick = deleteArticle.bind(deleteBtn[i], 'some_more_parameter');; 
 
    } 
 
} 
 

 
function deleteArticle(param){ 
 
    // DOM operation with "this" 
 
    alert(this.innerText + ' & ' + param); 
 
} 
 

 
setOnclick();
<button class="delete-btn"> 
 
xxx 
 
</button> 
 
<button class="delete-btn"> 
 
yyy 
 
</button>

+0

はい私はそれを行う方法を知っています:)私の問題は、私のonclickにこれを追加することができないということです。機能を実行して、私のボタンに追いつめたいからです。申し訳ありませんが、私は私はJSを学び始めている明確ではない。 – LudoB99

+0

@ LudovicBelzile 'this'などのパラメータをイベントリスナーに渡したい場合は、' .bind'を使うことができます。私の答えをチェックしてください。 – shaochuancs

+0

@ルドビッチ・ベルザイルよく考えた – AvrilAlejandro

0

クローサー機能を使うことができます。

function setOnclick() { 

    var deleteBtn = document.getElementsByClassName("delete-btn"); 

    for(var i = 0; i < deleteBtn.length; ++i){ 
     let article = deleteBtn[i]; 
     article.onclick = function() { 
      deleteArticle(article); 
     } 

    } 
} 

function deleteArticle(article){ 
    /* delete the article row from table */ 
} 
+0

これは間違っています。それは毎回 'undefined'を渡します。更新された回答 –

+0

。 – Raj

関連する問題