看板 Ajax 關於我們 聯絡資訊
<html> <script type="text/javascript"> function mAlert() { alert(this.value); } function mLoad(){ var obj = document.createElement("Input"); obj.type = "button"; obj.value = "btn"; obj.onclick = mAlert; document.getElementById("div").appendChild(obj); } </script> <body onload="mLoad()"> <input type="button" id="btn2" value="btn2" onclick="mAlert()"> <div id="div"> </div> </body> </html> 上頭的程式執行後,btn2印不出東西來,而btn就印的出來 是為什麼呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.181.192
buganini:function mAlert(obj){alert(obj.value);} 02/26 21:14
buganini:onclick="mAlert(this)" 02/26 21:15
buganini:不過我懷疑為什麼btn印的出來 02/26 21:15
buganini:知道了..剛剛沒看清楚... 02/26 21:17
buganini:obj.onclick = mAlert;的話mAlert可以說是mount在btn上面 02/26 21:17
buganini:所以this可以指到btn 02/26 21:18
buganini:但onclick="mAlert()" 是呼叫外部的東西 02/26 21:18
buganini:mAlert不適任何object的event/method所以this指不到 02/26 21:19
buganini:obj.onclick=mAlert就是拿mAlert去當btn的onclick event 02/26 21:20
buganini:樓樓上 s/不適/不是/ 02/26 21:22
buganini:在mAlert不是任何物件的event/method時,this似乎是指向 02/26 21:26
buganini:Window, 根據alert(this);出來的結果 02/26 21:27
buganini:要兩個都能用的話可以照一二樓的寫法 02/26 21:32
buganini:然後obj.onclick = function(){mAlert(this)}; 02/26 21:33