div's ein- und ausblenden
Samuel B. Weber
- javascript
0 Pawel0 Sven0 herbalizer0 Sven0 herbalizer0 Sven
0 herbalizer
Ich hab hier mal was gemacht was eigentlich gehn sollte!
ps: lass ich die else-befehle in der for-schleife aus funktionierts! aber das ja nicht den gewünschten effekt.
hier mal der code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script language="JavaScript">
var d = document;
var menues = new Array("menue01", "menue02", "menue03");
function showMenue(divName) {
if(d.all) {
for(var i = 0; i < menues.length; i++) {
if(divName == menues[i]) {
d.all[divName].style.visibility = "visible";
} else {
d.all[divName].style.visibility = "hidden";
}
}
} else if((!d.all) && (d.getElementById)) {
for(var i = 0; i < menues.length; i++) {
if(divName == menues[i]) {
d.getElementByid(divName).style.visibility = "visible";
} else {
d.getElementByid(divName).style.visibility = "hidden";
}
}
} else if(d.layers) {
for(var i = 0; i < menues.length; i++) {
if(divName == menues[i]) {
d.layers[divName].visibility = "show";
} else {
d.layers[divName].visibility = "hide";
}
}
}
}
</script>
</head>
<body>
<a href="#" onclick="showMenue('menue01');">menue01</a> <a href="#" onclick="showMenue('menue02');">menue02</a> <a href="#" onclick="showMenue('menue03');">menue03</a>
<div id="menue01" style="position:absolute; top:100px; left:10px; height:50px; width:100px; background-Color:#CCCCCC; visibility:hidden;">
menue01
</div>
<div id="menue02" style="position:absolute; top:100px; left:115px; height:50px; width:100px; background-Color:#CCCCCC; visibility:hidden;">
menue02
</div>
<div id="menue03" style="position:absolute; top:100px; left:220px; height:50px; width:100px; background-Color:#CCCCCC; visibility:hidden;">
menue03
</div>
</body>
</html>
das ziel soll sein mit einer funktion und einem click das richtige layer einzublenden und die anderen auszublenden
sollte doch gehn oda nicht?
thX im voraus
Hallo,
Sofern ich mich erinnern kann, wird die Eigenschaft visibility nur von Netscape unterstützt, nicht aber von IE. Hier musst Du display verwenden:
d.all[divName].style.display = 'none';
d.all[divName].style.display = 'visible';
Gruß, Pawel
http://www.pkworld.de
Moin!
Sofern ich mich erinnern kann, wird die Eigenschaft visibility nur von Netscape unterstützt, nicht aber von IE. Hier musst Du display verwenden:
Stimmt nicht, IE kann genausogut die visibility verändern. Da Opera am geladenen Dokument aber die Display-Eigenschaft nicht dynamisch ändern kann, ist visibility genau die richtige Eigenschaft.
- Sven Rautenberg
Du sprichst in den for-Schleifen immer die angeklickte Diversion an:
d.all[divName].style.visibility
es müsste aber heißen:
d.all[menues[i]].style.visibility
um alle Diversions durchzulaufen
Viel Spaß Sven
Moinsen.
Das Posting unter mir bitte ignorieren.
Fehler Nr1: Es muss getElementById(divName) und nicht getElementByid(divName) heissen.
Fehler Nr2: Deine for-Schleife ist ein bisschen unglücklich auf gebaut. Bei jedem Schleifen durchlauf wird geprüft, ob der angegebene Name identich mit einem Element aus einem Array ist. So weit ist es ok. Allerdings läuft die Schleife weiter wenn bereits eine Bedingung erfüllt wurde. Das heist, wenn der Name mit dem ersten Arrayelement übereinstimmt und der Layer angezeigt wird, läuft die Schleife weiter und prüft ob der Name mit dem zweiten Element identisch ist. Da er das nicht ist, wird der else-Teil deiner if-Anweisung ausgeführt und das erste Element wieder auf nichtsichtbar gesetzt. Somit hast du den Eindruck das nix funktioniert.
Anmerkung:
Für den IE würd iich folgende Bedingungen Prüfen:
IE < 5: document.all && !document.getElementById
IE >= 5 (Mozilla, KOnqueror etc.): document.getElementById
Gruß Herbalizer
Moinsen.
Das Posting unter mir bitte ignorieren.
-- Scherzkeks am Werk, vielleicht aktualisierst Du das nächstemal erst mal das Forum dann merkst Du auch das die sinnlose Antwort 2 Zeilen unter Dir steht und nicht direkt unter Dir
Moinsen.
-- Scherzkeks am Werk, vielleicht aktualisierst Du das nächstemal erst mal das Forum dann merkst Du auch das die sinnlose Antwort 2 Zeilen unter Dir steht und nicht direkt unter Dir
Selber Scherzkeks. Zwar bist du mir tatsächlich dazwischen gerutscht, aber bevor du was postest solltest du vielleicht deine Lösung erstmal ausprobieren und dann feststellen das sie nicht geht, weil sie auf genau dem selben Prinzip basiert.
Gruß Herbalizer
Selber Scherzkeks. Zwar bist du mir tatsächlich dazwischen gerutscht, aber bevor du was postest solltest du vielleicht deine Lösung erstmal ausprobieren und dann feststellen das sie nicht geht, weil sie auf genau dem selben Prinzip basiert.
ähm... funktioniert hervorragend abgesehen von dem ById das hab ich übersehen.
Ich hoffe Du bist nicht beleidigt
Ciao Sven
Ups funktioniert tatsächlich. Ich hab vorhins beim Test 'ne Kleinigkeit bei mir übersehen.
Schande über mich :)
Naja, schönen Tag noch
Herbalizer
Lösung: Ich benutze der Einfachheit halber nur Zahlen! Bitte genu hingucken beim Funktionsaufruf! Ausserdem hab ichs nur für Mozilla gemacht, sollte aber analog für den Rest sein.
var d = document;
var menues = new Array("menue01", "menue02", "menue03");
function showMenue(divNr) {
if((!d.all) && (d.getElementById)) {
for(var i = 0; i < menues.length; i++) {
if( i != divNr ) {
d.getElementById(menues[i]).style.visibility = "hidden";
} else if( i == divNr ) {
d.getElementById(menues[i]).style.visibility = "visible";
}
}
}
}
HTML:
<a href="#" onclick="showMenue(0);">menue01</a> <a href="#" onclick="showMenue(1);">menue02</a> <a href="#" onclick="showMenue(2);">menue03</a>
Gruß Herbalizer