• 締切済み

このjqueryが稀に動かない

画像が無いときに表示されるscriptですが稀に動かない時があります10分の4位動かないです。どのようにすればよろしいでしょうか? <script type="text/javascript" src="/kadenkoujiya1242/js/jquery.js"></script> <script type="text/javascript" src="/kadenkoujiya1242/js/noimg.js"></script> $(function () { $('img').error(function(){ $(this).attr({src:'/kadenkoujiya1242/img/noimg.png',alt:'画像が見つかりません'}); }); });

みんなの回答

回答No.4

No.2です。 なんか違う気がするので、(すみません、jQueryよくわかりません。) jQueryを使わずに書くので、適宜jQueryを使った書き方に変えてください。 .errorが<img>のonerrorイベントハンドラにセットするためのものだとすれば、<img>のsrcをセットする前に実行しなければいけません。 また、HTMLとして既に書かれている場合は、基本的にセット不可能です。(onerro後付けでは、タイミングが遅すぎます。) <img onerror="エラー処理"> という形で、HTMLファイル(imgタグ)に直接記述してください。 <script> onload=function(){  var imgs=document.getElementsByTagName('img'),    i=imgs.length;  while(i--)   if( !imgs[i].complete ){    imgs[i].setAttribute('src', '/kadenkoujiya1242/img/noimg.png');    imgs[i].setAttribute('alt', '画像が見つかりません');   } }; </script> ※全角スペース入れてます。未検証です。

takuya12421242
質問者

お礼

回答有難うございました!

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

1) HTML ファイル読み込み開始 2) IMG 要素発見!→ src="some_img.png" の画像読み込み開始! 3) HTML ファイル読み込み継続中 4) some_img.png の画像なかった! 5) HTML ファイル読み込み終了!(DOM Ready) 6) ↓実行!いまから画像ファイル読み込みがエラーで帰ってきたら |function () { |$('img').error(function(){ |$(this).attr({src:'/kadenkoujiya1242/img/noimg.png',alt:'画像が見つかりません'}); |});  ↓実行してね! |function(){ |$(this).attr({src:'/kadenkoujiya1242/img/noimg.png',alt:'画像が見つかりません'}); というときに、検出できない。。。

takuya12421242
質問者

お礼

回答有難うございました。やってみましたが変わりませんでした

回答No.2

$(function(){ if( !$('img').get(0).complete ){ $('img').attr({略}); } }) こうですかね。 スタイルシートを使うなら、これで行けると思います。 <style> img{background-image:url(/kadenkoujiya1242/img/noimg.png);} </style>

takuya12421242
質問者

お礼

回答有難うございました! せっかくソースを書いていただいたのに両方共ダメでした

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

??? DOM Ready より先に、img の responce が戻って来ちゃうと、エラーの検出は不可能だとおもうけど。。。 とりあえず JavaScripit でハンドリングするの止めちゃおう! それは、ウェブサーバの役目。

takuya12421242
質問者

お礼

回答ありがとうございました^^!

takuya12421242
質問者

補足

回答ありがとうございます。私自身javascript関係は初心者なので言っている意味がわかりません。お時間有りましたら初心者にわかるように説明してください。よろしくお願いします

関連するQ&A