0

関数をボタンごとに1回だけ実行するようにするにはどうすればよいですか?「クリックしてください」のクリックは1回だけ機能し、他のボタンも同じです。
多くのコードを入れないように、私は例を入れます..:http: //jsbin.com/apexod/2/edit

<input type="button" value="click me" onclick="hello('Jhon')"><br>
<input type="button" value="click me1" onclick="hello('Gerard')"><br>
<input type="button" value="click me2" onclick="hello('Kaoru')">
<script>
function hello(id){
    alert("hello "+id);
}
</script>
4

3 に答える 3

4

解決策は、クリックされたボタンを登録することです。

<script>
var done = {}
function hello(id){
   if (done[id]) return;
   done[id] = 1; 
   alert("hello "+id);
}
</script>

(もう1つは、jQueryとその1つの関数のようなユーティリティライブラリを使用することですが、これはそれだけではやり過ぎです)

于 2012-12-08T13:24:10.713 に答える
3

ボタン要素参照を関数に送信し、ボタンからイベントを削除できます。

<input type="button" value="click me" onclick="hello(this,'Jhon')"><br>
<input type="button" value="click me1" onclick="hello(this,'Gerard')"><br>
<input type="button" value="click me2" onclick="hello(this,'Kaoru')">
<script>
function hello(el, id){
    alert("hello " + id);
    el.onclick = null;
}
</script>

デモ: http: //jsfiddle.net/Guffa/CDjGY/

于 2012-12-08T13:35:27.467 に答える
1

実行すると、空の関数で関数をオーバーライドできます

function hello(){
     alert("hello " + id);
     hello = function(){}
}
于 2012-12-08T13:40:46.767 に答える