一html語法如下
<a id=”mylink” href=”#”><img id=”myimg” src=”XXX/xxxjpg”/></a>
我們給<a>註冊了click事件的處理函數,如下:
document.getElementById(“mylink”).onclick=function(e){
alert(e.target);
}
上述範例中的e.target會是指向<img/>物件。而如果<a>裡面放的是文字,e.target就會變成<a>了。
一般而言,如果我們直接在物件上註冊事件的處理函數,例如上例的document.getElementById(“mylink”).onclick,這個click事件函數可以被正確的執行,但有的時候我們會利用click事件的target來判別接下來要如何處理,例如
<div id=”mydiv>
<a id=”mylink>
<img id=”myimg” src=”xxx”/>
</a>
</div>
<script type=”text/javascript”>
document.getElementById(“mydiv”).onclick=function(e){
if(e.target.id=”mylink”){
alert(‘點擊的是鏈結!”);
}
}
</script>
此時若誤解了事件的目標物件,就會導致無法執行安排的處理函數。上例來講,e.target是指向<img/>,所以alert(“點擊的是鏈結!”)將永遠不會被執行。
ps:本篇文章作法與IE6有相容性問題。