当用户点击图像上,我想禁用所有其他图像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;
但它不工作。 任何人有这个问题的解决方案
因为你的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
一个解决方案是保存的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
};
它的onclick到suppposed是指向一个JavaScript函数。 而不是用的onclick尝试。
eles[i].disabled="true"
并在你的方法结束回ELES .disabled [I] =“假”
通过设置eles[i].onclick = false;
您重新分配onclick
事件false
。 设置回真不分配回原来的功能。 这可能是更好的处理事件的功能未分配代替。
基本上你的元素设置onclick
以false
和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;
};
}