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

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

报错信息:

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>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕粉 2020-07-29 09:39:14

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

http://img1.sycdn.imooc.com//climg/5f20d32e09afbfd806410428.jpg

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

好帮手慕粉 2020-07-28 14:35:50

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

http://img1.sycdn.imooc.com//climg/5f1fc5970955cbce08550174.jpg

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

http://img1.sycdn.imooc.com//climg/5f1fc60209641d2506190113.jpg

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

http://img1.sycdn.imooc.com//climg/5f1fc70809d42de305710159.jpg

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

  • 提问者 qq_慕运维6460539 #1
    老师我的报错依旧是在 'addEventListener' 这里,然后我查了查资料,最终将HTML中的<script src="eventComp.js"></script>放在了body标签的后面就解决了,应该是先加载元素再加载js才对,可是老师您为啥把引用放在head里也不会报错呢?怎么解释这种情况?
    2020-07-28 20:52:32
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师