下面是两段代码,用于为onclick事件分配事件处理程序。版本1适用于IE,FF,Safari和Chrome。版本2适用于IE,Safari和Chrome,但不适用于FF。在Version One中,我在标记中注册事件处理程序。在第二版中,我使用了一种更新的,更强大的方法来注册事件处理程序。
使用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 :(得分:1)
FF不允许您将DOM元素作为其ID标识的javascript变量进行访问。
您需要改为使用getElementById
。
答案 1 :(得分:0)
在最后一个脚本块中,playerFive
永远不会在任何地方定义,您可能需要
document.getElementById('playerFive').onclick=handler;
答案 2 :(得分:0)
您可以尝试此代码
if(document.all)// For IE
{
document.getElementById('playerFive').attachEvent('onclick',handler);
}
else // For FF
{
document.getElementById('playerFive').addEventListener('click',handler,false);
}
答案 3 :(得分: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