LoginSignup
0
1

More than 5 years have passed since last update.

【jQuery3.3.1】壊れた画像を"noimage.jpg"に差し換える Level②-1 「onerror」を使う

Last updated at Posted at 2018-06-19

目的

ページ上の壊れた画像をすべてnoimageに差し換える

前回

サンプルのHTML

broken_image.html
<html>

<head>
    <style type="text/css">
        div {
            width: 150px;
            height: 150px;
            border: 1px solid;
        }

        img {
            max-width: 100%;
            max-height: 100%;
        }
    </style>
</head>

<body>
    <!--存在しない画像-->
    <div>
        <img src="http://google.com/hogehoge.jpg" />
    </div>
    <div>
        <img src="http://google.com/fugafuga.jpg" />
    </div>
    <!--存在する画像-->
    <div>
        <img src="https://3.bp.blogspot.com/-rNmXJXzt8DQ/VsPnSNB6MzI/AAAAAAAA4Dw/GOIgFy4n2ls/s180-c/music_sakkyoku_piano_man.png "
        />
    </div>
    <div>
        <img src="https://2.bp.blogspot.com/-lAIFjv3ejHg/WEztKOlwR-I/AAAAAAABAUU/d9sJUl9xolIAaodsAHmZQFVj_7wkqpSmQCLcB/s400/ai_music.png "
        />
    </div>

</body>

</html>
表示結果
image.png

上の2枚の画像が壊れているので、
直します。

Level②.onerrorを使う

jQueryのonerrorを利用すれば、
壊れた画像をキャッチして直せるのではないかという発想。
これでちょっと作ってみます。

試行したHTML

<html>

<head>
    <style type="text/css">
        div {
            width: 150px;
            height: 150px;
            border: 1px solid;
        }

        img {
            max-width: 100%;
            max-height: 100%;
        }
    </style>
    <!--jQuery読み込み-->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <!--onerror(動かない)-->
    <script type="text/javascript">
        $ = jQuery;
        $img.on("error", function () {
            $img.attr("src", "https://placehold.jp/150x150.png?text=NoImage");
        })
    </script>
</head>

<body>
    <!--存在しない画像-->
    <div>
        <img src="http://google.com/hogehoge.jpg" />
    </div>
    <div>
        <img src="http://google.com/fugafuga.jpg" />
    </div>
    <!--存在する画像-->
    <div>
        <img src="https://3.bp.blogspot.com/-rNmXJXzt8DQ/VsPnSNB6MzI/AAAAAAAA4Dw/GOIgFy4n2ls/s180-c/music_sakkyoku_piano_man.png "
        />
    </div>
    <div>
        <img src="https://2.bp.blogspot.com/-lAIFjv3ejHg/WEztKOlwR-I/AAAAAAABAUU/d9sJUl9xolIAaodsAHmZQFVj_7wkqpSmQCLcB/s400/ai_music.png "
        />
    </div>

</body>

</html>
表示結果
image.png

なんと、これは動きません。
どこに問題があるのでしょうか。
自分のような初心者はここでまずハマりました。

これをFIXするためには、「JavaScriptの実行順」を理解しておく必要があります。

次回

Level②-2 onerrorを動かす に続く!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1