#javascript #image #onclick #src
#язык JavaScript #изображение #onclick #Src
Вопрос:
Эй, я хочу изменить изображение при нажатии на img с помощью javascript, это работает один раз, если я нажму на изображение, оно изменит scr, но не изменит его обратно
function ImgClick() { var img = document.getElementById("b1") if (img.src = "img/RoteAmpel.jpg") { img.src = "img/GrueneAmpel.jpg"; } else { img.src = "img/RoteAmpel.jpg"; } }
lt;!DOCTYPE htmlgt; lt;htmlgt; lt;headgt; lt;titlegt;Mouse Eventslt;/titlegt; lt;meta charset="UTF-8"gt; lt;/headgt; lt;bodygt; lt;h3gt;Mouse Eventslt;/h3gt; lt;img src="img/RoteAmpel.jpg" alt="Bildwechsel" title="Bildwechsel" id="b1" onclick="ImgClick()" /gt; lt;/bodygt; lt;/htmlgt;
Комментарии:
1. если(img.src=»img/RoteAmpel.jpg»)
2. так что я должен сделать == ? когда я пишу, если(img.src==»img/RoteAmpel.jpg») это даже не меняет его ни разу
3. И большинство разработчиков, как правило, используют
===
вместо этого, чтобы избежать неожиданного поведения при сравнении значений разных типов4.
console.log(img.src, img.src == "img/RoteAmpel.jpg")
это то, чего ты ожидаешь?
Ответ №1:
С вашим кодом есть две проблемы:
1. Присвоение и сравнение
Вы назначаете src
вместо сравнения:
if (img.src="img/RoteAmpel.jpg") { }
должно быть
if (img.src === "img/RoteAmpel.jpg") { }
2. img.src
возможно, это не то, чего вы ожидаете
При доступе img.src
вы получите полный квалифицированный URL-адрес, включая протокол, домен и т. Д.
Чтобы сравнить фактическое значение атрибута, используйте это:
img.getAttribute('src')
Вы можете проверить это сами:
function test() { var img = document.getElementById("b1") console.log(img.src); console.log(img.getAttribute('src')); } test();
lt;img id="b1" src="img/RoteAmpel.jpg"gt;
Комментарии:
1. Да, спасибо за помощь, которую вы не только помогли мне исправить это, я также понял, что было не так из-за функционального теста, который вы мне дали, спасибо 🙂