Re: [問題]Javascript 沒有每次都執行

看板Ajax作者 (B先生)時間13年前 (2012/08/09 18:14), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《piglon (TEST123)》之銘言: : 想請教 : 我寫了一個檢查破圖的js : 但是不是每次都會把所有的破圖取代 : 有時候全部都沒有取代 : 但是重新整理幾次之後就又好了 : 流程是這樣 : 抓到某個div區塊內所有的圖片 : 檢查如果是破圖就取代成另一張圖 : 程式碼如下 : <script type="text/javascript"> : var imgs = document.getElementById("show").getElementsByTagName("img"); : for(var i = 0;i < imgs.length;i++){ : imgs[i].onerror = function(){ : this.src = "./images/broken_pic.jpg"; : } : } : </script> : 我放在</body>之前 : 剛剛聽了musie的意見我改了一下但是不會取代@@ : <script type="text/javascript"> : var imgs = document.getElementById("show").getElementsByTagName("img"); : for(var i = 0;i < imgs.length;i++){ : if(imgs[i].complete){ : imgs[i].onerror = function(){this.src = "./images/pez_broken_pic.jpg";} : } : } : </script> : 我嘗試了imgs[i].onload = function(){this.src = "./images/pez_broken_pic.jpg";} : 還是有部分不會被取代 : imgs[i].complete = function(){this.src = "./images/pez_broken_pic.jpg";} : 則是全部沒有取代 一張圖片在載入的時候,成功會觸發onload,失敗會觸發onerror, 但無論是成功或失敗,complete都會是true, complete只代表這張圖片嘗試過載入了沒, 而且在你的code開始跑之前,前面的img說不定都load完了, 也就表示某些img已經觸發過onerror事件,舉例來說, 你希望小明"火車到台北站的時候下車", 但是你是在火車都已經過台中了才告訴他, 小明當然不會下車。 <script> window.onload = function(){ var imgs = document.getElementsByTagName('img'); for (var i = 0; i < imgs.length; i++) { if (imgs[i].naturalWidth == 0 && typeof(imgs[i].naturalWidth) != 'undefined') { imgs[i].src = "./images/pez_broken_pic.jpg"; } //for IE if (imgs[i].readyState == 'uninitialized') { imgs[i].src = "./images/pez_broken_pic.jpg"; } } }; </script> 目前只測試過chrome跟IE9,應該還有別的方法,像是用jQuery, 網路上應該都找的到,因為這個也是我google來的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.33.39 ※ 編輯: b12031106 來自: 114.32.33.39 (08/09 18:15) ※ 編輯: b12031106 來自: 114.32.33.39 (08/09 18:16) ※ 編輯: b12031106 來自: 114.32.33.39 (08/09 18:16)

08/11 23:11, , 1F
哇!!感謝 已經成功了 但是因為檔案很大所以 我改成html
08/11 23:11, 1F

08/11 23:12, , 2F
因為圖檔load很久 還是會有不執行的狀況
08/11 23:12, 2F
文章代碼(AID): #1G8usX8K (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1G8usX8K (Ajax)