- 締切済み
この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:'画像が見つかりません'}); }); });
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
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> ※全角スペース入れてます。未検証です。
- dscripty
- ベストアンサー率51% (166/325)
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:'画像が見つかりません'}); というときに、検出できない。。。
お礼
回答有難うございました。やってみましたが変わりませんでした
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
$(function(){ if( !$('img').get(0).complete ){ $('img').attr({略}); } }) こうですかね。 スタイルシートを使うなら、これで行けると思います。 <style> img{background-image:url(/kadenkoujiya1242/img/noimg.png);} </style>
お礼
回答有難うございました! せっかくソースを書いていただいたのに両方共ダメでした
- dscripty
- ベストアンサー率51% (166/325)
??? DOM Ready より先に、img の responce が戻って来ちゃうと、エラーの検出は不可能だとおもうけど。。。 とりあえず JavaScripit でハンドリングするの止めちゃおう! それは、ウェブサーバの役目。
お礼
回答ありがとうございました^^!
補足
回答ありがとうございます。私自身javascript関係は初心者なので言っている意味がわかりません。お時間有りましたら初心者にわかるように説明してください。よろしくお願いします
お礼
回答有難うございました!