2011-05-02 97 views
0

我試圖讓它如此,當一個元素獲得焦點時,它調用一個函數,然後將照顧所有其他事件 - 這裏是我現在的代碼。Javascript onFocus。然後onClick裏面的函數

<span id="checkbox" class="checkbox" onFocus="cbHover(checkbox)"></span> 

<script type="text/javascript"> 
    function cbHover(id) { 
     if(document.getElementById(id).onClick) { 
      document.getElementById(id).style.backgroundPositionY = '-63px'; 
     } 
    } 
</script> 

顯然,這不是工作:(那麼,有沒有辦法讓功能運行監聽其他事件?

謝謝!

+0

做'甚至有焦點事件?什麼時候會被觸發? – Rudie 2011-05-02 23:46:28

回答

0

當點擊對象,它已經是您可以跳過onFocus並用onClick代替它,或者從代碼中移除if(document.getElementById(id).onClick),因爲您不需要它。

+0

嗯,你看,我試圖做到這一點,所以一旦鼠標懸停在跨度,該功能將照顧onMouseDown,onClick等 - 所以只要鼠標在跨度區域內功能應該保持運行。 – Matt 2011-05-02 19:37:41

0

您可以使用兩個事件:onFocus和onLostFocus。在onFocus事件處理程序中甌能onClick事件添加到元素:

document.getElementById(id).addEventListener('click',function_name,true); 

在onLostFocus事件處理程序您可以移除事件

document.getElementById(id).removeEventListener('click',function_name,true) 
0

這是一個壞主意,即使你沒有得到它的工作運行在同一元素上應用多次點擊的風險。最好的辦法是隻適用於DOM準備的單擊事件我通常使用jQuery

所以如果我在哪裏jQuery中這樣做,我會做這樣的

$(document).ready(function(){ 
    $('.classname').click(function(){ 
     // what to do onclick 
    }); 
}); 
0

的原因它不是工作是參數通過的,應該用引號括起來。

它應該是

onFocus="cbHover('checkbox')"

否則,JavaScript的對待複選框作爲變量並試圖通過其是空的變量的值。