<!DOCTYPE HTML>
<html>
<body>
<link type="text/css" rel="stylesheet" href="example.css">
<div class="d1">1
<div class="d2">2
<div class="d3">3
</div>
</div>
</div>
<script>
var divs = document.getElementsByTagName('div')
for(var i=0; i<divs.length; i++) {
divs[i].onclick = function(e) {
e = e || event
var target = e.target || e.srcElement
this.style.backgroundColor='yellow'
alert("target = "+target.className+", this="+this.className)
this.style.backgroundColor = ''
}
}
</script>
</body>
</html>
上面的代碼是從http://javascript.info/tutorial/bubbling-and-capturing試圖瞭解在JS事件處理程序代碼
問題:
divs[i].onclick
,divs
是的HTMLCollection,它不是一個arrary,我們如何使用數組風格:array[i]
?對於事件處理程序,爲什麼我們不把var
在它的前面(如var divs[i].onclick
)?e = e || event
,何必把event
這裏?爲什麼不把var
在e
面前的,是因爲e
是全局變量?
for e = e ||事件它的兼容性原因在IE中事件對象在那裏出去傳遞給事件處理程序,但在其他事件必須通過事件處理程序的參數傳遞 – Marwan
** e **是**函數的參數(e )**,如果你沒有說,'e = e ||事件'返回事件(函數的默認事件變量) – user1487380
看起來JS喜歡數組語法:new String(「HELLO」)[0]與new String(「HELLO」)相同charAt(0) –