当用户点击图像时,我希望在我的功能完成之前禁用所有其他图像上的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;
但它不起作用。任何人都有解决这个问题的方法
答案 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
设置为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;
};
}