2013-02-21 46 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 
    }; 
相關問題