我只是想做一个测试,我习惯于在jQuery上工作,但不是在“普通”javascript上,我试图绑定这个事件,但我没有从事件中得到答案,我只是创建了一个链接和一个脚本html代码中的标记,用:
var li = document.getElementById('first');
li.addEventListener('onMouseover',function(){
警报( 'OK');
})
你能告诉我它有什么问题吗?我没有看到错误 感谢
答案 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');
};