老师我想尝试用一下兼容性代码,为什么会报错?

来源:2-17 Event对象跨浏览器兼容性写法

qq_慕运维6460539

2020-07-28 13:41:10

报错信息:

Uncaught TypeError: Cannot read property 'addEventListener' of undefined

    at Object.addHandle

js代码:

var eventComp = {

addHandle: 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]=null;

}

},

removeHandle: 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;

}

},

getTarget: function(event){

return event.targat || event.srcElement;

},

preventDefault: function(event){

if (event.preventDefault) {

event.preventDefault();

}else{

event.returnValue = false;

}

},

stopPropagation: function(event){

if (event.stopPropagation) {

event.stopPropagation();

}else{

event.cancelBubble = true;

}

}

};

var ul1=document.getElementsByTagName('ul')[0];

var fun = function(event){

alert(getTarget(event));

};

eventComp.addHandle(ul1,'click',fun);

HTML代码:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="eventComp.js"></script>

</head>

<body>

<ul>

<li id='1'>111</li>

<li id='2'>222</li>

<li id='3'>333</li>

<li id='4'>444</li>

<li id='5'>555</li>

<li id='6'>666</li>

</ul>

</body>

</html>


写回答

2回答

好帮手慕粉

2020-07-29

同学你好,老师在测试同学代码的时候,没有新建js文件,直接放在body里面了:

http://img.mukewang.com/climg/5f20d32e09afbfd806410428.jpg

所以没有出现同学所说的问题。

0

好帮手慕粉

2020-07-28

同学你好,当老师运行同学代码时,控制台报如下错:

http://img.mukewang.com/climg/5f1fc5970955cbce08550174.jpg

意思是112行的getTarget 是未定义的,查看112行代码:

http://img.mukewang.com/climg/5f1fc60209641d2506190113.jpg

另外,同学有个单词写错了:

http://img.mukewang.com/climg/5f1fc70809d42de305710159.jpg

如果我的回答帮助了你,欢迎采纳。祝学习愉快~

0
hq_慕运维6460539
h 老师我的报错依旧是在 'addEventListener' 这里,然后我查了查资料,最终将HTML中的<script src="eventComp.js"></script>放在了body标签的后面就解决了,应该是先加载元素再加载js才对,可是老师您为啥把引用放在head里也不会报错呢?怎么解释这种情况?
h020-07-28
共1条回复

0 学习 · 40143 问题

查看课程