作者FFz (澎湖.仙人掌.234)
站內Ajax
標題[問題] 動態建立Element
時間Mon Feb 26 19:50:25 2007
<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
1F:推 buganini:function mAlert(obj){alert(obj.value);} 02/26 21:14
2F:→ buganini:onclick="mAlert(this)" 02/26 21:15
3F:→ buganini:不過我懷疑為什麼btn印的出來 02/26 21:15
4F:→ buganini:知道了..剛剛沒看清楚... 02/26 21:17
5F:→ buganini:obj.onclick = mAlert;的話mAlert可以說是mount在btn上面 02/26 21:17
6F:→ buganini:所以this可以指到btn 02/26 21:18
7F:→ buganini:但onclick="mAlert()" 是呼叫外部的東西 02/26 21:18
8F:→ buganini:mAlert不適任何object的event/method所以this指不到 02/26 21:19
9F:→ buganini:obj.onclick=mAlert就是拿mAlert去當btn的onclick event 02/26 21:20
10F:→ buganini:樓樓上 s/不適/不是/ 02/26 21:22
11F:推 buganini:在mAlert不是任何物件的event/method時,this似乎是指向 02/26 21:26
12F:→ buganini:Window, 根據alert(this);出來的結果 02/26 21:27
13F:推 buganini:要兩個都能用的話可以照一二樓的寫法 02/26 21:32
14F:→ buganini:然後obj.onclick = function(){mAlert(this)}; 02/26 21:33