/ / javascript onmouseover / onmouseout pozostań w poprzedniej treści do momentu najechania myszą / uruchom następną - javascript, html, onmouseover, onmouseout

javascript onmouseover / onmouseout pozostaje w poprzedniej zawartości, dopóki nie najedzie / nie uruchomi następnego - javascript, html, onmouseover, onmouseout

Jestem początkującym javascript. W tym projekcie nie możemy użyć jQuery tutaj. Lubię mieć prostokątne 4 komórki w prawym dolnym rogu, które pełnią funkcję miniaturek i będą wyświetlać różne obrazy po najechaniu kursorem.

<div id="resistorContent">
<section id="resistorDetail1" class="1stdetailContent"><img src="/images/http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic1.jpg" alt=""></section>
<section id="resistorDetail2" class="detailContent"><img src="/images/http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic2.jpg" alt=""></section>
<section id="resistorDetail3" class="detailContent"><img src="/images/http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic3.jpg" alt=""></section>
<section id="resistorDetail4" class="detailContent"><img src="/images/http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic4.jpg" alt=""></section>

<span class="closeButton"><a id="close" onclick="hideContent("resistorContent")">X</a></span>

<ul>
<li onmouseover="showDetailContent("resistorDetail1")" onmouseout="hideDetailContent("resistorDetail1")"></li>
<li onmouseover="showDetailContent("resistorDetail2")" onmouseout="hideDetailContent("resistorDetail2")"></li>
<li onmouseover="showDetailContent("resistorDetail3")" onmouseout="hideDetailContent("resistorDetail3")"></li>
<li onmouseover="showDetailContent("resistorDetail4")" onmouseout="hideDetailContent("resistorDetail4")"></li>
</ul>
</div>
</section>


<script type="text/javascript">
function showDetailContent(target) {
document.getElementById(target).style.display = "block";
}

function hideDetailContent(target){
document.getElementById(target).style.display = "none";
}
</script>

Lubię wprowadzać pewne ulepszenia, ponieważ te komórki są teraz oparte na onmouseout które wyłączają link <section> aby mógł ponownie załadować następny <section>. Jeśli odsunę mysz od komórek, wyświetli się pusta strona.

Jak napisać javascript, aby pozostawał aktualny <section> i ładuj tylko drugi <section> kiedy najedziesz na inne komórki?

Z góry dziękuję

http://jsfiddle.net/63L72trx/10/

Odpowiedzi:

1 dla odpowiedzi № 1

Podzielmy to, co chcesz zrobić, na proste zdanie:

„Kiedy pokazuję inny element, chcę ukryć inne elementy, które mogą lub nie mogą być pokazywane”.

Więc usuńmy onmouseout który ukrywa elementy i wymusza stan „resetowania”, który zapewnia, że ​​wszystkie elementy są ukryte za każdym razem, gdy pokazujemy przedmiot przed nami onmouseover.

<div id="resistorContent">
<section id="resistorDetail1" class="1stdetailContent"><img src="/images/http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic1.jpg" alt=""></section>
<section id="resistorDetail2" class="detailContent"><img src="/images/http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic2.jpg" alt=""></section>
<section id="resistorDetail3" class="detailContent"><img src="/images/http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic3.jpg" alt=""></section>
<section id="resistorDetail4" class="detailContent"><img src="/images/http://d3d71ba2asa5oz.cloudfront.net/40000483/images/pic4.jpg" alt=""></section>
<span class="closeButton"><a id="close" onclick="hideContent("resistorContent")">X</a></span>
<ul>
<li onmouseover="showDetailContent("resistorDetail1")"></li>
<li onmouseover="showDetailContent("resistorDetail2")"></li>
<li onmouseover="showDetailContent("resistorDetail3")"></li>
<li onmouseover="showDetailContent("resistorDetail4")"></li>
</ul>
</div>
</section>

<script type="text/javascript">
var children = document.querySelectorAll("#resistorContent > section[id]");
function showDetailContent(target) {
// Simply loop over our children and ensure they are hidden:
for (var i = 0, child; child = children[i]; i++) {
child.style.display = "none";
}
// Now, show our child we want to show
document.getElementById(target).style.display = "block";
}
</script>

Oto działające skrzypce: http://jsfiddle.net/rgthree/63L72trx/12/