1. 程式人生 > >js中三種事件繫結之間的關係和事件處理函式裡的this值

js中三種事件繫結之間的關係和事件處理函式裡的this值

<!DOCTYPE HTML>
<html >
<head>
    <meta charset="UTF-8">

</head>
<body>
<div id="b" onclick="console.log(this)">
<div>
</body>

</html>

輸出:div元素本身

<!DOCTYPE HTML>
<html >
<head>
    <meta charset="UTF-8">
</head>
<body>
<div id="b" onclick="console.log(this)">
<div>

<script type="text/javascript">
var c=document.getElementById("b");
c.onclick=function(){console.log(1)}

</script> 
</body>

</html>

輸出:1

onclick的繫結方式會覆蓋內聯式的事件繫結。也可以在c.onclick裡輸出this,可知道this代表div元素本身。

<!DOCTYPE HTML>
<html >
<head>
    <meta charset="UTF-8">
</head>
<body>
<div id="b" onclick="console.log(this)">
<div>

<script type="text/javascript">
var c=document.getElementById("b");
c.onclick=function(){console.log(1)}
c.addEventListener("click",function(){alert('2')},false)
</script> 
</body>

</html>

輸出:1,彈出2

addEventListener不會覆蓋c.onclick繫結的函式,(自然也不會覆蓋內聯的onclick,addEventListener就是以疊加的方式繫結事件處理函式的,就像用addEventListener也可以繫結幾個事件處理函式一樣)也可以在addEventListener的事件處理函式裡輸出this,可知道this代表div元素本身。