Я пытаюсь изменить изображение и текст внутри h2, используя onmouseover и onmouseout, как в этом gif
onmouseover
onmouseout
<h2>ICE 14: Drake the Duck</h2> <img id="duck" src="https://i.imgur.com/G8TcUqA.jpg" onmouseover='(function(){ //this.src="./duck2.jpg" document.getElementById("duck").src="https://i.imgur.com/dsF2mgL.jpg" document.getElementById("message").innerHTML="I am so very tired" })()' onmouseout='(function(){ document.getElementById("duck").src="https://i.imgur.com/PKi5s3p.jpg" document.getElementById("message").innerHTML="Now I am wide awake!" })()' > <h2 id="message">I am Drake the Duck.</h2>
Использование this
this
<h2>ICE 14: Drake the Duck</h2> <img id="duck" src="https://i.imgur.com/G8TcUqA.jpg" onmouseover='this.src="https://i.imgur.com/dsF2mgL.jpg"' onmouseout='this.src="https://i.imgur.com/PKi5s3p.jpg"' > <h2 id="message">I am Drake the Duck.</h2>
Ключевое слово this само по себе не поможет вам, поскольку это просто ссылка на элемент, вызвавший событие, то есть на элемент <img> в вашем случае.
<img>
Однако, если элемент <h2> всегда является следующим братом после вашего <img>. Вы можете запросить свойство изображения .nextElementSibling , чтобы получить ссылку на <h2> и присвоить текст.
<h2>
Вот пример:
<h2>ICE 14: Drake the Duck</h2> <img id="duck" src="https://i.imgur.com/G8TcUqA.jpg" onmouseover='this.src="https://i.imgur.com/dsF2mgL.jpg";this.nextElementSibling.innerHTML="Now I am wide awake!"' onmouseout='this.src="https://i.imgur.com/PKi5s3p.jpg";this.nextElementSibling.innerHTML="I am so very tired!"'> <h2 id="message">I am Drake the Duck.</h2>
Не используйте IIFE в атрибуте onclick, потому что this не наследуется функциями (если вы не используете стрелочную функцию). Вы можете просто поместить код прямо в атрибут onclick без оболочки функции.
onclick
<h2>ICE 14: Drake the Duck</h2> <img id="duck" src="https://i.imgur.com/G8TcUqA.jpg" onmouseover='this.src="https://i.imgur.com/dsF2mgL.jpg"; document.getElementById("message").innerHTML="I am so very tired"' onmouseout='this.src="https://i.imgur.com/PKi5s3p.jpg"; document.getElementById("message").innerHTML="Now I am wide awake!"'> <h2 id="message">I am Drake the Duck.</h2>
используйте nextElementSibling селектор, чтобы создать улей
nextElementSibling