11

ユーザーが画像をクリックしたときに、機能が終了するまで他のすべての画像のonClicksを無効にします。

私は現在、それらを無効にする次のコードを持っています:

var eles = document.getElementsByTagName('img');
for (var i=0; i < eles.length; i++)
   eles[i].onclick = false;

しかし、それらを再度有効にする方法がわかりません。私が試してみました:

var eles = document.getElementsByTagName('img');
for (var i=0; i < eles.length; i++)
   eles[i].onclick = true;

しかし、それは機能していません。誰もがこの問題の解決策を持っています

4

5 に答える 5

9

onClick = falseでonClickを削除したため、ソリューションは機能しません。その後、onClickイベントハンドラーを再度作成する必要があります。

これはおそらくonclickイベントを追加する方法です。動作するように変更しました。

<img src="image1.jpg" onclick="when_i_click();"/>
<img src="image2.jpg" onclick="when_i_click();"/>

上記のようにonclickに関数を追加してみてください。

オンクリック機能:

var when_i_click = function(){
    alert('image clicked!');
}

これは、onclicks(メソッド)を無効にする方法です。

var eles = document.getElementsByTagName('img');
for (var i=0; i < eles.length; i++)
   eles[i].onclick = null;

これは、それらを再度有効にする方法です(onClickに関数を再接続します)

var eles = document.getElementsByTagName('img');
for (var i=0; i < eles.length; i++)
   eles[i].onclick = when_i_click;

これはjqueryソリューションjqueryです:

DOMにonclickイベントハンドラーを追加しないことで、邪魔にならないJavaScriptを使用してみてください。

<script>
(function(){
    var function_is_finished = false;
    $('img').on('click',function(event){
        if(function_is_finished) {
            //Do your stuff when someone clicks on Img
        }
    });
})();
</script>

関数が終了したら、次のように設定function_is_finishedします。true

于 2013-02-21T13:34:39.767 に答える
3

1つの解決策は、onclickの以前の値を保存して、それを復元することです。

var disable_all = function () {
    var eles = document.getElementsByTagName('div');
    for (var i=0; i < eles.length; i++) {
      eles[i].prev_click = eles[i].onclick; // save the previous value
      eles[i].onclick = false;
    }
}

var enable_all = function() {
    var eles = document.getElementsByTagName('div');
    for (var i=0; i < eles.length; i++)
       eles[i].onclick = eles[i].prev_click;  // restore the previous value
    };
于 2013-02-21T13:43:20.157 に答える
1

onclickは、javascript関数を指していると思われます。onclickの代わりに試してみてください。

eles[i].disabled="true"

メソッドの最後でeles[i].disabled="false"に戻ります

于 2013-02-21T13:35:13.910 に答える
0

を設定すると、イベントeles[i].onclick = false;がに再割り当てされます。trueに戻すと、元の関数に戻されません。代わりに、イベント関数で割り当て解除を処理する方がおそらく良いでしょう。onclickfalse

于 2013-02-21T13:35:20.930 に答える
0

基本的に、要素onclickfalseとに設定しますtrue。それは次のようなことをするのと同じです

<img src=".." onclick="false"/>

それから

<img src=".." onclick="true"/>

あなたがすべきことは、あなたが関数を開始できるかどうかを確認するためにあなたがチェックするいくつかの変数を維持することです。

locked = false;
function yourFunction() {
    if (locked) {
        locked = true;
        //... Do what you have to do here
        locked = false;
    };
}
于 2013-02-21T13:41:32.327 に答える