Re: [問題] JavaScript如何Remove掉onload?

看板Ajax作者 (鼎玉鉉)時間12年前 (2011/11/01 14:13), 編輯推噓3(300)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《gs1458 (hoi)》之銘言: : 大家好,我又來了...( 艸) : 這是昨天小弟弄包覆的問題發現的。 : 這是HTML: : <img src="example.jpg" onload="loadImg(this);" /> : 這是JavaScript: : function loadImg(me) { : me.title = me.src; : me.onload = function(){}; : //me.onload = null; : } : 完整內容: : http://pastie.org/2785012 : 我想做的事情很明顯是要把onload給清除掉, : 但是不曉得語法是不是錯誤的一直都清不掉, : 發現這個問題是因為昨天我用克隆的方式來作div包覆的動作, : 會造成image一直進行無窮迴圈的onload問題, : 網路上大多都是介紹onload如何使用, : 敝人找到關於Remove這個內容的文獻似乎都無效, : 於是就再來請教各位了,謝謝。 你這個是cloneNode的問題 跟無窮迴圈沒關係阿 cloneNode會將元素複製 但是教科書上有寫所有屬性都複製 事件處理常式卻沒複製 所以應該在 http://pastie.org/2788559 程式中的14行 image.cloneNode(true) 複製出來的物件 應該是沒有onLoad事件的處理常式 不過記既然執行一直在重複跑onLoad 表示onLoad處理常式也複製到了 因此當append時 新的複製元素執行了他的onload 我測試ie ff都會 但是你用image.removeAttribute('onload');沒用阿 因為image代表原先那個被複製的元素 你要刪的是新產生的元素 所以將 http://pastie.org/2788559 程式多加一個參數 改一改就好 以下請參考 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "" rel="nofollow">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-TW" xml:lang="zh-TW"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Image</title> <script type="text/javascript"> function wrap(image) { //包覆img alert('good'); //測試是否重複執行 //image.onload = function(){}; //為了先清掉onload再克隆才不會無窮迴圈 //image.onload = null; if(image.width>800 || image.height>600) { //我是要做到圖片太大時加上超連結 var alink = document.createElement('a'); alink.target = "_blank"; alink.href = "http://www.google.com/"; //alink.appendChild(image.cloneNode(true)); //克隆一目標 //將以上分三行拆開寫 並將新物件的onload換成空物件 var x= image.cloneNode(true); x.onload = function(){}; alink.appendChild(x); image.parentNode.replaceChild(alink, image); //取代舊有目標 } } </script> </head> <body> <img id="myimg" src="example.jpg" onload="wrap(this);" /> </body> </html> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.182.110.233

11/01 22:49, , 1F
這也是個好方法,非常感謝您的解答m(_*_)m
11/01 22:49, 1F

11/01 22:51, , 2F
另外,當沒有cloneNode時清除還是得靠removeAttribute :)
11/01 22:51, 2F

11/01 22:55, , 3F
題外:你名字跟我一樣都有鉉耶XD
11/01 22:55, 3F
文章代碼(AID): #1EhuuPLb (Ajax)
文章代碼(AID): #1EhuuPLb (Ajax)