(1) 傳值、傳址鬼打牆
在重新開始復習C++的傳值、傳址的當兒,沒想到也在js 裏遇到這種問題
code長這樣:
for (var i=0; i< max; i++){
elements[i].onclick = function(){
alert(i);
}
}
那當你點下element[0]的時候,到底會alert啥咪?答案是 ... max。而且不管click element[1], element[2]...答案都相同!因為匿名function註冊的寫法是傳址的效果。
寫成這樣:
function clickHandle(i){
elements[i].onclick = alert(i);
}
for (var i=0; i< max; i++){
clickHandle(i);
}
就會沒事,因為傳進function裏的值是類似傳值的效果…鬼打牆的數小時....
(2) textarea 包textarea ....
是不行的,我可能是公司裏最後一個知道的人Orz.....
沒有留言:
張貼留言