连枝
2016-11-04 09:47
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<div>
<input type="button" id="btn1" value="按钮1" onclick="showMessage()"/>
<input type="button" id="btn2" value="按钮2" />
<input type="button" id="btn3" value="按钮3" />
<input type="button" id="btn4" value="按钮4" />
<input type="button" id="btn5" value="按钮5" />
</div>
<script type="text/javascript">
function showMessage(){
alert("第一种事件处理程序:HTML事件处理程序");
}
var btn2=document.getElementById('btn2');
btn2.onclick=function(){
alert("第二种事件处理程序:DOM0级事件处理程序");
}
//btn2.onclick=null;//删除事件
function showMs(){
alert("第三种事件处理程序:DOM2级事件处理程序");
}
var btn3=document.getElementById('btn3');
btn3.addEventListener('click',showMs,false);
btn3.addEventListener('click',function(){
alert(this.value);
},false);
//btn3.removeEventListener('click',showMs,false);//删除事件
var btn4=document.getElementById('btn4');
function showMsg(){
alert("第四种事件处理程序:IE事件处理程序");
}//对谷歌浏览器无效
btn4.attachEvent('onclick',showMsg);
btn4.detachEvent('onclick',showMsg);
//跨浏览器事件处理程序,用封装的方法
//按钮5的JavaScript代码如下:
var btn5=document.getElementById('btn5');
function show(){
alert("第五种事件处理程序:跨浏览器事件处理程序");
}
var EventUtill={
//添加句柄
addHandler:function(element,type,handler){
if(element.addEventListener){
element.addEventListener(type,handler,false);
}
else if(element.attachEvent){
element.attachEvent('on'+type,handler);
}
else{
element['on'+type]=handler;
}
},
//删除句柄
removeHandler:function(element,type,handler){
if(element.removeEventListener){
element.removeEventListener(type,handler,false);
}
else if(element.detachEvent){
element.detachEvent('on'+type,handler);
}
else{
element['on'+type]=null;
}
}
}
EventUtill.addHandler(btn5,'click',show);
</script>
</body>
</html>这是我的全部代码,出问题的代码在最后的部分,按钮5的事件实现不了。但是看不出错在哪里,IE上点击按钮5可以,chrome上不行,求查错!
因为chrome中
btn4.attachEvent('onclick',showMsg);
btn4.detachEvent('onclick',showMsg);
这两句报错了,所以JS不会往下执行,就没有办法给btn5添加事件
调试结果如图
上面讲有理由应该是对的。。attachEvent这个方法在谷歌里面不支持,可能就报错了,并不能继续往下执行,所以就看不到下面正确的语句效果了
function showMsg(){
alert("第四种事件处理程序:IE事件处理程序");
}//对谷歌浏览器无效
btn4.attachEvent('onclick',showMsg);
btn4.detachEvent('onclick',showMsg);
//跨浏览器事件处理程序,用封装的方法
去掉这些就好了,估计是有处理不了


<input type="button" value="btn5" id="btn5"/>
可以啊,chrome测过了,没问题啊,就用你的代码,只取最后一部分,注释掉没有用的代码,你把上面代码注释掉试一下。
DOM事件探秘
99528 学习 · 1305 问题
相似问题