JS 動態加入事件2

寫完 JS 動態加入事件1後,又被小卡到了 @@"

用clone的方式複製按鈕,呼叫function時,卻不是我想要的結果,一直出現5:
(本來的期望是,按下'按鈕0',就alert('0')
原始的程式碼:
範例下載htmlDOM2_1.htm

var obj=document.getElementById('a');
for(var i=0;i<5;i++){
var copyObj=obj.cloneNode(true); //複製節點
copyObj.innerHTML='btn'+i;
copyObj.onclick=function(){
alert(i);
}
obj.parentNode.appendChild(copyObj); //加上節點
}


後來發現,要改用this這個關鍵字來塞變數:
修改的程式碼:
範例下載htmlDOM2_2.htm

var obj=document.getElementById('a');
for(var i=0;i<5;i++){
var copyObj=obj.cloneNode(true); //複製節點
copyObj.innerHTML='btn'+i;
copyObj.val=i;//<-----------------重點,為節點增加屬性
copyObj.onclick=function(){
alert(this.val);//<-----------------重點,使用this
}
obj.parentNode.appendChild(copyObj); //加上節點
}
Category:

0 意見: