2013-02-21 25 views
7

当用户点击图片时,我希望禁用所有其他图片上的onClicks,直到我的功能完成。如何在页面上禁用或启用所有onClick图片

目前,我有这个代码,禁止他们:

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; 

但它不工作。任何人都可以为此问题提供解决方案

+0

你有这个问题表明您点击绑定错误处理的事实。如果你在控制并可以改变它,请删除所有'onclick'属性,并在JS中使用'addEventListener'方法或使用像jQuery这样的框架来获得更广泛的浏览器支持。然后当你准备好时你可​​以将事件变色 – naugtur 2013-02-22 12:14:20

回答

6

您的解决方案无法正常工作,因为您使用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_finishedtrue

+0

如果我想要一些参数发送到该功能,有什么办法可以做到这一点......? – 2013-07-10 07:11:57

+0

确实重置了onclick的值:“eles [i] .onclick = when_i_click;”在重置它的那一刻实际调用该函数? – 2016-11-13 04:29:06

+0

不,它不。 – Timmetje 2016-11-15 15:07:07

1

的onclick它suppposed是指向一个JavaScript函数。 而不是onclick尝试。

eles[i].disabled="true" 

,并在你的方法结束回ELES .disabled [I] = “假”

0

通过设置eles[i].onclick = false;你重新分配onclick事件false。设置回true不会将其分配回原始功能。相反,处理事件函数中的取消分配可能会更好。

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; 
    }; 
} 
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 
    }; 
相关问题