Problem mit if/else verhalten
andreasn
- javascript
Hallo,
Ich stehe hier gerade ziemlich auf dem Schlauch,
aber vielleicht ist ja hier Jemand so nett mir weiter zu helfen.
Folgende Funktion:
function wechsel() {
var allElems = document.getElementsByTagName("*");
for (var i = 0; i < allElems.length; i++) {
var thisElem = allElems[i];
if (thisElem.className && thisElem.className=="uebersicht") {
//alert(thisElem.style.visibility);
if(thisElem.style.visibility=="collapse")thisElem.style.visibility="visible";
else thisElem.style.visibility="collapse";
}
}
}
soll durch diese Buttons:
<div style="text-align:left;">
<input type="button" value="Übersicht ein" onclick="wechsel()" id="button_ein" class="uebersicht" style="position:absolute; left:7px; visibility:visible;color:Black;background-color:Olive;">
<input type="button" value="Übersicht aus" onclick="wechsel()" id="button_aus" class="uebersicht" style="position:absolute; left:7px; visibility:collapse;color:Black;background-color:Olive;">
</div><br>
den folgenden Bereich ein und ausblenden (und die Buttons "tauschen"):
<td valign="top" id="block_1" class="uebersicht" style="visibility:collapse;">
Das funktioniert durch das unschöne position absolut auch, allerdings wollte ich die Funktion wegen den unterschieden, in den HTML-Elementen,
jetzt auch um display block, bzw none erweitern und die Funktion versagt den Dienst schon, wenn ich das else durch:
if(thisElem.style.visibility=="visible")
ersetzen, obwohl bei "wieder ein-kommentiertem" alert, nur visible, oder collapse ausgegeben wird...
Kann mir jemand einen Tipp geben, was da schief laufen könnte?
Schon mal Danke und Gruß Andreas
Guten Morgen!
alert gibt nur dann etwas aus, wenn auch etwas übergeben wird. Solange style und damit auch style.visibility nicht gesetzt ist, wird nichts ausgegeben - aber das Script bricht aufgrund des Fehlers, dass eine nicht gesetzte Instanz abgefragt wird, ab (schaue es Dir mal in der Fehlerkonsole an).
Gruß, LX
Guten Morgen!
alert gibt nur dann etwas aus, wenn auch etwas übergeben wird. Solange style und damit auch style.visibility nicht gesetzt ist, wird nichts ausgegeben - aber das Script bricht aufgrund des Fehlers, dass eine nicht gesetzte Instanz abgefragt wird, ab (schaue es Dir mal in der Fehlerkonsole an).
Gruß, LX
Hallo,
das ist sehr eigenartig, alert gibt bei mir abwechselnd visible und collapse aus, aber ich schau nochmal bei firebug nach ob ich auch mit dem else Zweig einen Fehler finde...
Gruß Andreas
Guten Morgen!
alert gibt nur dann etwas aus, wenn auch etwas übergeben wird. Solange style und damit auch style.visibility nicht gesetzt ist, wird nichts ausgegeben - aber das Script bricht aufgrund des Fehlers, dass eine nicht gesetzte Instanz abgefragt wird, ab (schaue es Dir mal in der Fehlerkonsole an).
Gruß, LX
Hallo,
das ist sehr eigenartig, alert gibt bei mir abwechselnd visible und collapse aus, aber ich schau nochmal bei firebug nach ob ich auch mit dem else Zweig einen Fehler finde...
Gruß Andreas
Danke für die Antwort, aber hat sich erledigt,
der Fehler lag nicht in der Syntax, sondern ind der Logik,
benutzt man dieses Skriptstück:
alert(thisElem.style.visibility+"|"+thisElem.id);
if(thisElem.style.visibility=="collapse")thisElem.style.visibility="visible";
if(thisElem.style.visibility=="visible")thisElem.style.visibility="collapse";
alert(thisElem.style.visibility+"|"+thisElem.id);
statt dem if/else Teil, wird es beim 2. alert klar,
er bekommt alle Werte Fehlerfrei übergeben, (macht auch in Firebug keine Fehler), startet man allerdings mit collapse, setzt die erste abfrage den Wert auf visible und die 2. wieder zurück, (was else natürlich nicht tut)...
Gruß Andreas