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

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

新規登録して質問してみよう
ただいま回答率
85.35%
イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

JavaScript

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

Q&A

解決済

2回答

5517閲覧

javascript imgタグの画像変更のイベント

ellion

総合スコア31

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

JavaScript

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

0グッド

0クリップ

投稿2020/05/04 06:00

編集2020/05/04 06:06

javascriptにて、imgタグの画像を変更した時、画像の読み込みがちゃんと完了してから処理を行いたいです。

画像が読み込み終わって、画像がちゃんと切り替わると発火するイベントハンドラは何かありますでしょうか?

よろしくお願いいたします。

document.getElementById("id_img_a").src = "../image/1.JPG";
この処理で<img id="id_img_a" src="../image/2.JPG">の画像に対し、変更を命令してから、
表示される画像が1.JPGに変わった時に、処理を実施したいです。

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

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

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

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

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

m.ts10806

2020/05/04 06:15

「javascript 画像を読み込んでから」などで調べると出てくる情報では何が足りませんでしょうか。
ellion

2020/05/04 06:21 編集

返信ありがとうございます。 もしかして、imgのonloadは画像の読み込み完了だけでなく、画像も変更においても読み込み完了時に発火するという事でしょうか?
ellion

2020/05/04 06:30

document.getElementById("id_img_a").onload = function() { alert('読み込み完了'); } だと、最初の2.JPGの読み込み完了の時も、画像を1.JPGに切り替え終わった時も発火しないので、つまってます。
think49

2020/05/04 06:47

markdownを使ってください。 追加情報は質問文に追記してください。
ellion

2020/05/04 06:49

返信ありがとうございます。 ちょうど自己解決いたしました。
ellion

2020/05/04 07:05

返信ありがとうございます。 見させていただきます。
guest

回答2

0

document.getElementById("id_img_a").onload = function() { alert('読み込み完了'); }
だと、最初の2.JPGの読み込み完了の時も、画像を1.JPGに切り替え終わった時も発火しないので、つまってます。

こちらの環境では発火します。

HTML

1<!DOCTYPE html> 2<title>sample</title> 3<img src="https://teratail-v2.storage.googleapis.com/uploads/avatars/u15/153487/hIXJnrKM_thumbnail.jpg" alt="icon"> 4<script> 5'use strict'; 6const img = document.querySelector('img'); 7img.onload = event => console.log(event.type, event.target.src); 8img.src = 'https://teratail-v2.storage.googleapis.com/uploads/avatars/29548/qWEFkt9x_thumbnail.jpg'; 9</script>

上記HTMLを実行したら、どうなりますか。

Re: ellion さん

投稿2020/05/04 06:47

think49

総合スコア18189

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

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

0

自己解決

javascript

1var v_main_img; 2window.addEventListener("load", 3 function(){ 4 v_main_img = document.getElementById("id_img_a"); 5 v_main_img.addEventListener('load', function() {alert('読み込みました。'); 6 }, false); }, false);

addEventListenerを入れ子にする事で、
imgタグの画像を変更した時、画像の読み込みがちゃんと完了するとalertが表示されるようになりました。
アドバイスいただいた方々、ありがとうございます。

投稿2020/05/04 06:53

編集2020/05/04 07:07
ellion

総合スコア31

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

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

think49

2020/05/04 07:08

入れ子にしなくても解決しますし、コンテンツ全体が読み込み完了するまで画像切り替え時に発火しないコードになっていますが…。 解決優先で読む人への配慮がない姿勢は伝わりました。
ellion

2020/05/04 07:21

私のバックグラウンド何も知らない人にあれこれ言われても... というか自分の考えやルールを早急な低評価と共に強要されるのは、結構ひいてしまいます。 攻撃的で人を傷つけるのが好きな姿勢は伝わりました。
think49

2020/05/04 08:21

> というか自分の考えやルールを早急な低評価と共に強要されるのは、結構ひいてしまいます。 どう思われても構いませんが、低評価を投じたのは私ではありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問