[問題] 動態建立Element

看板Ajax作者 (澎湖.仙人掌.234)時間18年前 (2007/02/26 19:50), 編輯推噓3(3011)
留言14則, 1人參與, 最新討論串1/1
<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

02/26 21:14, , 1F
function mAlert(obj){alert(obj.value);}
02/26 21:14, 1F

02/26 21:15, , 2F
onclick="mAlert(this)"
02/26 21:15, 2F

02/26 21:15, , 3F
不過我懷疑為什麼btn印的出來
02/26 21:15, 3F

02/26 21:17, , 4F
知道了..剛剛沒看清楚...
02/26 21:17, 4F

02/26 21:17, , 5F
obj.onclick = mAlert;的話mAlert可以說是mount在btn上面
02/26 21:17, 5F

02/26 21:18, , 6F
所以this可以指到btn
02/26 21:18, 6F

02/26 21:18, , 7F
但onclick="mAlert()" 是呼叫外部的東西
02/26 21:18, 7F

02/26 21:19, , 8F
mAlert不適任何object的event/method所以this指不到
02/26 21:19, 8F

02/26 21:20, , 9F
obj.onclick=mAlert就是拿mAlert去當btn的onclick event
02/26 21:20, 9F

02/26 21:22, , 10F
樓樓上 s/不適/不是/
02/26 21:22, 10F

02/26 21:26, , 11F
在mAlert不是任何物件的event/method時,this似乎是指向
02/26 21:26, 11F

02/26 21:27, , 12F
Window, 根據alert(this);出來的結果
02/26 21:27, 12F

02/26 21:32, , 13F
要兩個都能用的話可以照一二樓的寫法
02/26 21:32, 13F

02/26 21:33, , 14F
然後obj.onclick = function(){mAlert(this)};
02/26 21:33, 14F
文章代碼(AID): #15uic42D (Ajax)
文章代碼(AID): #15uic42D (Ajax)