例一:
image.png为什么A不对?因为在html中onclick=" " 接的是要执行的代码,你直接给一个print是什么意思,执行个毛。而B,C给的是函数,理解为当点击后执行对应的函数。
例二:
image.pngprint的类型为对象
print() 函数如果没有return返回值是Undefined
例三:
HTML代码
<button id="xxx">xxx</button>
JS代码:
//第一种写法
xxx.addEventListener('click',function(){
console.log(1)
})
//第二种写法
xxx.onclick=funtion(){
console.log(2)
}
xxx.onclick=function('click',funtion(){
console.log(3)
})
这两种写法有何区别?第二种写法是xxx的一个属性,属性意味着可以被覆盖,比如这时候我在写一个console.log(3),这个时候他只会执行3,而把2覆盖了,所以这是一个非常不好的模型,因为会被覆盖,比如我同事写了一个事件A,我又写了一个事件B,结果他的A就不会被执行了。于是有了addEventListener(事件监听队列)
____________________________________________________
addEventListener
1.addEventListener 队列模型,特点“先进先出”, 队列的实质是:数组
JS代码
xxx.addEventListener('click',function(){
console.log(1)
})
xxx.addEventListener('click',function(){
console.log(2)
})
结果: 先打印1 再打印2 符合“先进先出”
2.remove 也是队列模型
JS代码
function f1(){
console.log(1)
}
function f2(){
console.log(2)
}
function f3(){
console.log(3)
}
xxx.addEventListener('click', f1)
xxx.addEventListener('click', f2)
xxx.removeEventListener('click', f1)
xxx.addEventListener('click', f3)
xxx.removeEventListener('click', f3)
当点击xxx时,会打印出几? 答案:2
3.one是如何实现的?
以下是one的实现过程
function f1(){
console.log(1)
xxx.removeEventListener('click', f1)
}
xxx.addEventListener('click', f1)
网友评论