Как показывать картинку при наведении курсора мыши на ссылку (mouseover / mouseout)?

#javascript #mouseover #mouseout

#javascript #наведение курсора мыши

Вопрос:

Я пытаюсь получить ссылку, чтобы показать окно с картинкой в нем, с помощью mouseover и mouseout . Я пробовал массив, но не смог получить из этого никакого результата, и прямо сейчас у меня есть этот код (который дает мне тот же результат, что и массив).

Я получаю изображение для отображения, но я получаю только первое для всех ссылок. Я получил тот же результат, когда использовал массив (все ссылки показывают картинку, но только первую картинку), но, думаю, мне просто не удается соединить нужную картинку с нужной ссылкой.

Может ли кто-нибудь, пожалуйста, помочь мне с этим?

 <p id="lankar"><a href="#" alt="site1" />Link 1</p>
<p id="link" class="hide"><img src="img/bild1.jpg"></p>

<p id="lankar1"><a href="#" alt="site2" />Link 2</p>
<p id="link1" class="hide"><img src="img/bild2.jpg"></p>

<p id="lankar2"><a href="#" alt="site3" />link 3</p>
<p id="link2" class="hide"><img src="img/bild3.jpg"></p>

<script>
var links = document.getElementById('lankar');
links.addEventListener("mouseover", showBox);
links.addEventListener("mouseout", hideBox);
var links1 = document.getElementById('lankar1');
links1.addEventListener("mouseover", showBox);
links1.addEventListener("mouseout", hideBox);
var links2 = document.getElementById('lankar2');
links2.addEventListener("mouseover", showBox);
links2.addEventListener("mouseout", hideBox);

function showBox() {
if(document.getElementById('lankar'))
document.getElementById('link').style.display = 'block';
else if(document.getElementById('lankar1'))
document.getElementById('link1').style.display = 'block';
else if(document.getElementById('lankar2'))
document.getElementById('link2').style.display = 'block';
}


function hideBox() {
if(document.getElementById('lankar'))
document.getElementById('link').style.display = 'none';
else if(document.getElementById('lankar1'))
document.getElementById('link1').style.display = 'none';
else if(document.getElementById('lankar2'))
document.getElementById('link2').style.display = 'none';
}
</script>
  

Комментарии:

1. В ваших if/else блоках первое if условие всегда выполняется. По сути, вы просто проверяете, существует ли элемент по этому id , и это всегда так.

Ответ №1:

Используйте CSS :hover … и добавьте несколько разметок

 .lankar {
  display: block
}
.hide {
  display: none;
}
.lankar:hover   .hide, .hide:hover {
  display: block;
}  
 <a class="lankar" href="#" alt="site1">Link 1</a>
<img class="hide" src="http://placehold.it/150x100/00f">

<a class="lankar" href="#" alt="site1">Link 2</a>
<img class="hide" src="http://placehold.it/150x100/0f0">

<a class="lankar" href="#" alt="site1">Link 3</a>
<img class="hide" src="http://placehold.it/150x100/f00">  

Комментарии:

1. Спасибо! На самом деле это было намного лучше, чем я надеялся! Я не знаю, почему мне всегда приходится все так усложнять, когда это явно не так. Надеюсь, я научусь, когда у меня это получится лучше. 😉

2. @Isla Да, ты будешь… и, как вы можете видеть, я это сделал 🙂