質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

18185閲覧

HTMLの画像読み込み時にonerrorを使用した際の無限ループを回避したい。

a-takahashi

総合スコア48

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2015/09/04 05:04

HTMLで下記のようなコードで画像の表示をしています。

HTML

1<img src="./img/Sample.png" onerror="this.src='./img/no_image.png';" alt="サンプル画像">

src属性のパスの画像がない場合は、no_image.pngの画像を表示させたいのですが、
この記述だと、onerrorで指定したパスに画像がなかった場合、無限ループになってしまうようなのです。

どうにかして、これを回避する方法はないでしょうか?
なるべくHTMLだけで完結させたいのですがそれは可能でしょうか?

ご存知の方いらっしゃいましたら、アドバイスいただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

img.onerror = null; でイベントを削除すれば、一度だけ発火できます。

HTML

1<img src="./img/Sample.png" onerror="this.onerror = null;img.src = './img/no_image.png'" alt="サンプル画像">

投稿2015/09/04 12:44

think49

総合スコア18189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

a-takahashi

2015/09/07 03:59

まさに私が探していたものです!! ありがとうございました。 他に回答いただいた方もありがとうございました。 大変参考になりました。
guest

0

jsはhtmlファイルの中に書いちゃえばいいんじゃないかなと思いましたが。。。

短いjsなのでもしよろしければこれでいかがでしょうか。
(no_imageは確認のためにterateilの画像を突っ込みました!)

html

1<body> 2 <img src="./img/Sample.png" id="js-image"alt="サンプル画像"> 3 <script> 4 var img = document.getElementById('js-image'); 5 img.onerror = function(){ 6 alert('not loading'); 7 //画像をappend 8 img.setAttribute('src', 'https://cdn.teratail.com/img/common/login/imglogoLogin_white.png?1441261867'); 9 } 10 </script> 11</body>

投稿2015/09/04 05:18

MasakazuFukami

総合スコア1869

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

onerrorで出す画像が存在しないことをまず無くすべきではと思いますが、確実にエラーを無くすなら、
その画像をData URIスキームでHTMLの中に入れてしまえば良いかと思います。

投稿2015/09/04 05:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問