Code:<script type="text/javascript"> <!-- function ChangeVis() { if (document.getElementById("hinweise").style.visibility == "hidden") { document.getElementById("hinweise").style.visibility = "visible"; } else { document.getElementById("hinweise").style.visibility = "hidden"; } } //--> </script>
Ergebnis 1 bis 7 von 7
- 19.05.2010, 13:19 #1Roter Delicious
Themenstarter
- Registriert
- 01.2008
- Beiträge
- 91
JS-Funktion funktioniert nur einmal
Hallo zusammen,
zugegeben ... meine letzte JS-Programmierung liegt etwas zurück und ich stehe gerade auf dem Schlauch. Ich habe eine Funktion geschrieben, die einen DIV-Container je nach Zustand sichtbar oder unsichtbar schalten soll. Leider funktioniert sie nur einmal, bei einem zweiten Klick auf den Link läuft sie nicht mehr. Hier der Code:
Hat jemand eine Idee, woran es liegen könnte?Code://CSS-Code <style type="text/css"> .hinweise { width:150px; height:150px; position:absolute; top:50px; left:50px; background-color: red; visibility: hidden; } </style> ... //JS-Code <script language="JavaScript" type="text/javascript"> <!-- function ChangeVis() { if(document.getElementById("hinweise").style.visibility = "hidden") { document.getElementById("hinweise").style.visibility = "visible"; } else if(document.getElementById("hinweise").style.visibility = "visible") { document.getElementById("hinweise").style.visibility = "hidden"; } return; } //--> </script> ... //Funktionsaufruf Für wichtige Hinweise bitte <a href="javascript:ChangeVis()">hier</a> klicken! ... //DIV-Container <div class="hinweise" name="hinweise" id="hinweise">Test</div>
Danke
Andy
- 19.05.2010, 13:48 #2
- 19.05.2010, 13:55 #3Roter Delicious
Themenstarter
- Registriert
- 01.2008
- Beiträge
- 91
Jetzt verstehe ich die Welt nicht mehr. Ich dachte, das hätte ich schon probiert ...

Na egal, jetzt funktioniert es auf jeden Fall. Vielen Dank!
- 19.05.2010, 15:52 #4
@lowflyer7: Du hast "=" statt "==" geschrieben, also immer gleich den Wert hidden zugewiesen und sofort wieder den Wert visible hinterher. Eine Fallunterscheidung findet so nicht statt.
Der Rest, den fraggle geändert hat, macht's nur eleganter/kürzer (z.B. überflüssiges Return weg und unnütze zweite Fallunterscheidung weg, deren Ergebnis ohnehin schon feststeht).* Wer nichts weiß, muss alles glauben.
* Geduld mit der Streitsucht der Einfältigen! Es ist nicht leicht zu begreifen, dass man nicht begreift.
Marie von Ebner-Eschenbach
Mac-Tastaturlayout für Windows (z.B. in Bootcamp oder VM)
- 19.05.2010, 16:30 #5Roter Delicious
Themenstarter
- Registriert
- 01.2008
- Beiträge
- 91
- 19.05.2010, 16:47 #6
Ja, das sind die Tücken von JavaScript

In der If-Bedingung darf ein beliebiger Ausdruck stehen. Wie in C oder Java ist eine Zuweisung auch ein Ausdruck, sie wird zum zugewiesenen Wert ausgewertet. D.h. In "if (….visibility = hidden)" weist Du der Variable visibility erst den Wert hidden zu, danach wird die ganze „Bedingung“ zu hidden ausgewertet. If prüft dann, ob der Wert <> 0 ist (oder <> null oder <>false, was in dieser typlosen Sprache praktisch auf dasselbe hinausläuft), und das ist der Fall. Also wird anschließend immer der Then-Zweig ausgeführt.
Ich muss zugeben: Hätte fraggle nicht die richtige Lösung aufgeschrieben, wäre mir das auch nicht gleich aufgefallen. (Dass ich auch Sprachen wie Pascal/Delphi oder SQL verwende, wo "=" ein Vergleichsoperator ist, macht das Erkennen solcher Fehler nicht einfacher
) * Wer nichts weiß, muss alles glauben.
* Geduld mit der Streitsucht der Einfältigen! Es ist nicht leicht zu begreifen, dass man nicht begreift.
Marie von Ebner-Eschenbach
Mac-Tastaturlayout für Windows (z.B. in Bootcamp oder VM)
- 25.05.2010, 00:35 #7Cripps Pink
- Registriert
- 01.2010
- Beiträge
- 153
Tooltipp: Mit http://jslint.com würde man so einen Fehler finden.


Zitieren

