為什么新建的無法刪除操作
? var a=document.createElement("a");
? ? ? ? ?a.innerHTML="刪除";
? ? ? ? ?a.href="javascript:;";
? ? ? ? ?a.onClick="del(this)";
? ? ? ? ?
? var a=document.createElement("a");
? ? ? ? ?a.innerHTML="刪除";
? ? ? ? ?a.href="javascript:;";
? ? ? ? ?a.onClick="del(this)";
? ? ? ? ?
2016-04-22
舉報
2016-04-25
我跟你同一天遇到的這個問題,時間上比你早一點點,然后一個問題玩到了現(xiàn)在o(╯□╰)o,好了,說重點
a.onClick="del(this)";這一行無效,無效原因下面說,我先說幾種有效的寫法:
a.onclick=function(){del(this);}
a.onclick=function(){del(a);}
a.onclick=function(){var deltr=this.parentNode.parentNode;deltr.parentNode.removeChild(deltr)};
然后說說無效這回事
首先,假如del是個不帶參的函數(shù),那么a.onclick=del;這種寫法有效,帶參就是上面那種帶function的
然后,上邊四種寫法都是a.onclick=方法名,就是將方法賦值給a的onclick事件,達到綁定事件作用,所以a.onClick="del(this)"至少應(yīng)該寫成a.onClick=del(this)
但是可惜的是a.onClick=del(this)也是錯的,這句話并不具有綁定事件作用,而是直接調(diào)用del(this),這不是我們要的
不過還有更可惜的,就是哪怕沒綁到onclick上,del(this)也沒有執(zhí)行,這是因為this指向調(diào)用者,沒有調(diào)用者時指向window,于是this.parentNode什么的undefined了,無法執(zhí)行。換成del(a)則至少可以執(zhí)行了。
最后說說a.onclick=del()與a.onclick=del
帶括號的是執(zhí)行函數(shù),返回值賦給onclick,結(jié)果就是,越過onclick先執(zhí)行了;不帶括號的是將函數(shù)綁定到onclick上,需要的時候再執(zhí)行。
如有錯誤,望指正。
2016-04-26
好像還是不行額
2016-04-22
我也遇到了這個問題