Zeige 1 div und alle anderen auszublenden klicken Sie auf mit Javascript
Ich bin die Einrichtung eines "bio" - Abschnitt auf meiner Website, und ich habe 3 Bilder von den Mitarbeitern und 3 divs mit den einzelnen Mitarbeitern bios unten. Ich will gar nicht das bios ist Standard und zeigen dann nur noch die div in Verbindung mit dem Bild, dass geklickt wird, und blenden Sie alle anderen divs.
Derzeit scheint es, wie es ist, nicht zu finden die Elemente, da bin ich immer "undefined"
Hier ist mein HTML so weit:
<div onclick="showhide('bill');" class="bio_image"><div class="name">Bill Murray</div></div>
<div onclick="showhide('bill2');" class="bio_image"><div class="name">Bill Murray</div></div>
<div onclick="showhide('bill3');" class="bio_image"><div class="name">Bill Murray</div></div>
<div class="hide" id="bill">BILL</div>
<div class="hide" id="bill2">BILL2</div>
<div class="hide" id="bill3">BILL3</div>
Und meine Javascript:
function showhide(id){
if (document.getElementById) {
var divid = document.getElementById(id);
var divs = document.getElementsByClassName("hide");
for(var div in divs) {
div.style.display = "none";
}
divid.style.display = "block";
}
return false;
}
JSFiddle
Irgendwelche Ideen? Danke!
- Sie werden nicht immer müssen
if (document.getElementById)
. Auch ältere Browser nichtdocument.getElementsByClassName()
. Darüber hinaus einige Versionen von IE und anderen Browsern, nicht in der Lage zu tun, eine für in-Schleife, mit.getElementsByClassName()
oder.getElementsByName()
. Auf diejenigen, die Sie wollen stick mitfor(var i=0,l=elementArray.length; i<l; i++)
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einen regelmäßigen
for
- Schleife alsfor in
loop-Schleife über die anderen Eigenschaften des NodeList-und nicht nur über die Liste der ElementeJSFiddle
Bei der Verwendung
for(var div in divs)
,div
ist nicht das element. Diese notation wird verwendet, wenn die Iteration von JSON-Objekten.Möchten Sie diese stattdessen zu verwenden: