关于定义多个事件的疑惑
来源:2-8 DOM0级事件
神尾观铃丶
2019-09-09 15:03:20
2-9课程内老师说了,DOM 0级事件的引入是为了处理定义多个事件;但是按照视频内的写法,依旧还是只能用来定义一个事件呀,我个人认为与在标签上写事件没有什么区别,老师能跟我讲一下如何定义多个事件吗?
还有下方的代码,是我为了尝试在li上定义多个相同事件的代码,最后在控制台输出报错了,console.log(x[i])和console.log(this.x[i])都报错了,想问一下是为什么
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<ul>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
</ul>
<script>
var x = document.getElementsByTagName("li");
for (var i = 0; i < x.length; i++) {
console.log(x.length);
x[i].onclick = function () {
console.log(this.x[i]);
}
}
</script>
</body>
</html>2回答
同学你好,
老师这里举个简单的例子, 帮助同学理解两种方式的区别。 例如: 我们需要修改li绑定点击事件为鼠标移入事件的时候, 如果是写在标签上的话, 那就需要一个一个的修改标签上事件, 但如果使用DOM0级事件,只需要在js中修改一句代码就可以了。而且, 将html结构和js逻辑代码分开,更符合编码的规范哦
同学粘贴的这段代码就是同时给li绑定多个事件哦
代码报错主要是因为js作用域的问题, 同学目前先了解是这个原因造成的报错, 后面js高级课程中老师详细的讲解什么是作用域
建议:可以调整代码直接输出this, 就是指向当前点击的元素哦

如果帮助到了你, 欢迎采纳!
祝学习愉快~~~~
神尾观铃丶
提问者
2019-09-09
我说的在标签上写事件的意思是比如
<div onclick=fun()></div>这样,然后函数在JS内定义,不是直接在HTML页面内写
相似问题