2010-10-14 69 views
0

下面是一個onclick事件分配一個事件處理程序的代碼的兩個剪。版本一在IE,FF,Safari和Chrome中運行。第二版可在IE,Safari和Chrome中使用,但不適用於FF。在版本1中,我在標記中註冊事件處理程序。在版本2中,我使用了一個更新的,並且更可靠的方法來註冊事件處理程序。火狐不註冊onclick事件處理程序

用Firebug,它看起來就像是沒有得到註冊onclick事件處理程序,但我不明白爲什麼不能。任何想法讚賞。謝謝。

 
*************** Version One ****************************** 
< script type="text/javascript"> 

function handler() 
{ 
    // do something here 
} 

</script> 

< a id="playerFive" class="player" onclick="handler()"> 
    < img src="./images/speakerIcon25pxFFF4E0.png" alt=""/> 
</a> 
************************************************************ 


*************** Version Two ****************************** 
< script type="text/javascript"> 

function handler() 
{ 
    // do something here 
} 

</script> 

< a id="playerFive" class="player"> 
    < img src="./images/speakerIcon25pxFFF4E0.png" alt=""/> 
</a> 

< script type="text/javascript"> 

playerFive.onclick = handler; 

< /script> 
************************************************************ 
+0

其實你的第二個版本是一樣的第一個。它不是「新的」或「更穩健」,您只需通過JavaScript設置監聽器,而不是標記。新的方法是使用'addEventListener'。實用信息:http://www.quirksmode.org/js/events_advanced.html – 2010-10-14 06:34:37

回答

1

FF不允許您訪問DOM元素作爲由其ID標識的JavaScript變量。

您需要使用getElementById代替。

在最後一個腳本塊
+0

+1哇,我不知道任何瀏覽器都沒有...但我想我儘量不寫JS中的壞日子IE <= 6,其中許多瘋狂無疑起源於此 – tobyodavies 2010-10-14 06:26:03

0

playerFive是從來沒有在任何地方定義,你可能想

document.getElementById('playerFive').onclick=handler; 
0

你可以試試這個代碼

if(document.all)// For IE 
{ 
     document.getElementById('playerFive').attachEvent('onclick',handler); 
} 
else // For FF 
{ 
     document.getElementById('playerFive').addEventListener('click',handler,false); 
} 
0
<html> 
<head> 
    <script type="text/javascript"> 
    window.onload = function() { 
     var div = document.getElementById("dvClickMe"); 
     if(div.attachEvent) 
      div.attachEvent('onclick', sayHello); 
     else 
      div.setAttribute('onclick', 'sayHello()'); 
    } 
    function sayHello() { alert("Hello!"); } 
    </script> 
</head> 
<body> 
    <div id="dvClickMe">Click me!</div> 
</body> 
</html> 

上面的代碼正在IE8和FF 3.6.10

相關問題