如何在页面上禁用或启用所有onClick图像

时间:2013-02-21 13:30:21

标签: javascript html onclick image

当用户点击图像时,我希望在我的功能完成之前禁用所有其他图像上的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;

但它不起作用。任何人都有解决这个问题的方法

5 个答案:

答案 0 :(得分:7)

您的解决方案不起作用,因为您使用onClick = false删除了onClick。之后,您需要再次创建onClick事件处理程序。

这可能是你添加onclick事件的方式,我改变它以便它可以工作。

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

尝试在onclick上添加一个功能,如上所述。

您的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:

尝试使用无阻碍的javascript,不在DOM中添加onclick事件处理程序。     

<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

即可

答案 1 :(得分:1)

onclick它应该指向一个javascript函数。 而不是onclick尝试。

eles[i].disabled="true"

并在你的方法结束时回到eles [i] .disabled =“false”

答案 2 :(得分: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
    };

答案 3 :(得分:0)

通过设置eles[i].onclick = false;,您将onclick事件重新分配给false。设置回true不会将其分配回原始功能。最好在事件函数中处理取消分配。

答案 4 :(得分:0)

基本上,您要将元素“onclick设置为falsetrue。 这相当于做

之类的事情
<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;
    };
}