Events Firefox未注册onclick事件处理程序

Events Firefox未注册onclick事件处理程序,events,firefox,handler,Events,Firefox,Handler,下面是为onclick事件分配事件处理程序的两段代码。版本一适用于IE、FF、Safari和Chrome。版本2在IE、Safari和Chrome中工作,但在FF中不工作。在版本1中,我在标记中注册事件处理程序。在版本2中,我使用了一种更新的、据说更健壮的方法来注册事件处理程序 使用firebug,看起来onclick事件处理程序没有注册,尽管我不明白为什么没有注册。任何想法都值得赞赏。谢谢 *************** Version One **********************

下面是为onclick事件分配事件处理程序的两段代码。版本一适用于IE、FF、Safari和Chrome。版本2在IE、Safari和Chrome中工作,但在FF中不工作。在版本1中,我在标记中注册事件处理程序。在版本2中,我使用了一种更新的、据说更健壮的方法来注册事件处理程序

使用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> ************************************************************ ***************第一版****************************** < script type=“text/javascript”> 函数处理程序() { //在这里做点什么 } </script> < a id=“playerFive”class=“player”onclick=“handler()”> < img src=“./images/speakerIcon25pxFFF4E0.png”alt=“”/> </a> ************************************************************ ***************第二版****************************** < script type=“text/javascript”> 函数处理程序() { //在这里做点什么 } </script> < a id=“playerFive”class=“player”> < img src=“./images/speakerIcon25pxFFF4E0.png”alt=“”/> </a> < script type=“text/javascript”> playerFive.onclick=处理程序; </script> ************************************************************
FF不允许您将DOM元素作为按ID命名的javascript变量来访问


您需要改用
getElementById

在最后一个脚本块中,
playerFive
从未在任何地方定义过,您可能希望

document.getElementById('playerFive').onclick=handler;
你可以试试这个代码

 if(document.all)// For IE
 {   
       document.getElementById('playerFive').attachEvent('onclick',handler);
 }
 else // For FF
 {
       document.getElementById('playerFive').addEventListener('click',handler,false);
 }

window.onload=函数(){
var div=document.getElementById(“dvClickMe”);
如果(部门附件)
div.attachEvent('onclick',sayHello);
其他的
setAttribute('onclick','sayHello()');
}
函数sayHello(){alert(“Hello!”;}
点击我!

上面的代码在IE8和FF 3.6.10上运行,哇,我不知道有任何浏览器。。。但我想我在IES糟糕的旧时代尽量不写JS实际上你的第二个版本和第一个版本是一样的。它不是“更新的”或“更健壮的”,您只是通过JavaScript在标记中设置侦听器。新方法是使用
addEventListener
。有用信息:
<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>