使用普通js的简单代码:addEventListener不响应

时间:2011-04-25 21:34:41

标签: javascript addeventlistener


我只是想做一个测试,我习惯于在jQuery上工作,但不是在“普通”javascript上,我试图绑定这个事件,但我没有从事件中得到答案,我只是创建了一个链接和一个脚本html代码中的标记,用:

  

var li = document.getElementById('first');
              li.addEventListener('onMouseover',function(){
                  警报( 'OK');
              })

你能告诉我它有什么问题吗?我没有看到错误 感谢

2 个答案:

答案 0 :(得分:1)

您可以将处理函数直接分配给DOM中所选元素的onmouseover属性:

var lis = document.getElementById('first');
lis.onmouseover = function() {
    alert('yo');
};

关于jsFiddle:http://jsfiddle.net/entropo/YMGAy/

文件:

修改
这里也使用addEventListener ...

li = document.getElementById('first');
li.addEventListener('mouseover', function(e) {
    alert('ok');
}, false);

http://jsfiddle.net/entropo/7FvZ7/
您错过了addEventListener的最后一个参数(对于useCapture

答案 1 :(得分:1)

首先,您需要删除addEventListener()的“on”部分。其次,事件名称必须全部为小写。第三,你缺少第三个参数,它是布尔值,指示是否在捕获阶段而不是冒泡阶段处理事件(如果有疑问,请使用false)。

您需要考虑的另一个问题是IE< = 8不支持addEventListener(),因此您需要使用专有的attachEvent()方法包含特定于IE的回退。

有了这一切,你的榜样就变成了:

var li = document.getElementById('first');
if (typeof li.addEventListener != "undefined") {
    li.addEventListener('mouseover', function() {
        alert('ok');
    }, false);
} else if (typeof li.attachEvent != "undefined") {
    li.attachEvent('onmouseover', function() {
        alert('ok');
    });
}

最简单的跨浏览器解决方案是所谓的DOM0方法,使用元素的onmouseover属性。但是,这样做的缺点是每个元素每个事件只允许一个事件监听器,因此很可能被其他代码覆盖。

li.onmouseover = function() {
    alert('ok');
};