JavaScript の基本の「image changer を追加する」にあるコードについてなのですが
var myImg = document.querySelector('img') myImg.onclick = function () { var mySrc = myImg.getAttribute('src') if (mySrc === 'images/firefox-icon.png') { console.log(myImg) // firefox-icon2.png ...① console.log(mySrc) // firefox-icon.png ...② myImg.setAttribute('src', 'images/firefox2.png') // ...③ } else { myImg.setAttribute('src', 'images/firefox-icon.png') } }
③を実行する前に、console.logで①と②の中身を見てみました。
予想では①と②の両方ともfirefox-icon.png
だと思っていたのですが、
①だけfirefox-icon2.png
でした。
何故①は③の実行前なのに、console.logで中身を見たときに既にfirefox-icon2.png
になっているのでしょうか。
初歩的な質問ですみません。
回答よろしくお願いします。
試していただきたいことがあります。console.log( myImg.cloneNode(true) ); とするとどうなりますか?
その場合だと <img src="images/firefox-icon.png" alt="The Firefox logo: a flaming fox surrounding the Earth."> が返ってきました。
では、kreiさんの回答のとおりですね。以前に、私も類似の質問に回答しています。https://teratail.com/questions/5420
Lhankor_Mhyさんの過去の質問にあるコードを実際に動かしてみました。私が使っているブラウザはSafariで、最初からWebインスペクタのコンソールを表示した状態でconsole.log(a)を確認すると正しく表示されたのですが、「console.log(a)実行→Webインスペクタのコンソールを開いて確認」の順だとLhankor_Mhyさんの質問にあったような挙動が確認できました。これは、kreiさんの回答にある「コンソールを確認した時点での値を表示する」に確かに当てはまっており、今回のconsole.logの挙動を理解するのにすごく助かりました。有難うございました。
回答1件
あなたの回答
tips
プレビュー