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 № 1Podzielmy 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/