Abfrage einer Eigenschaft
Frank
- javascript
0 Genie0 Gunnar Bittersmann0 Frank
0 Mathias Brodala0 Frank
Hallo, ich brauche da leider etwas Nachhilfe in den "basics" :-/
ich möchte gerne einem Textfeld per Javascript-Funktion wechselweise die Eigenschaft display = "none" oder display = "block" zuweisen.
Das Textfeld ist per <style>input{display:block;}</style> vor-formatiert.
Die Funktion müsste im Prinzip wie folgt aufgebaut sein:
if (document.formular.textfeld.style.display == "block")
document.formular.textfeld.style.display = "none";
else
document.formular.textfeld.style.display = "block";
Leider klappt (bei mir) die if-Abfrage nicht.
Wie kann ich den aktuellen Status Quo der Anzeige ermitteln, und warum klappt es nicht in der oben aufgeführten Form ?
Mfg Frank
Hi
Leider klappt (bei mir) die if-Abfrage nicht.
Klappt nicht, gibts nicht. Fehlermeldung? Was passiert?
[...] warum klappt es nicht in der oben aufgeführten Form ?
s.o.
mfg
Genie
Keine Fehlermeldung, nichts passiert. Nicht mal die Javascript-Konsole sagt was ...
Hi
Rück mal Quellcode raus
<html>
<head>
<style type="text/css">
[code lang=css]input{display:block;}
</style>
<script type="text/javascript">
function test()
{if (document.formular.textfeld.style.display == "block")
document.formular.textfeld.style.display = "none";
else
document.formular.textfeld.style.display = "block";}
</script>
</head>
<body>
<form name="formular">
<input type="button" onclick="test()" value="test">
<input name="textfeld" value="test">
</form>
</body>
</html>
[/code]
funzt bei mir. (Ich weiß, dass da ein paar Fehler sind, doctype, <title> etc.)
mfg
Genie
funzt bei mir.
Das ist auch richtig - aber erst nach zweimaligem Klick auf den Button (beim ersten Ausführen des Scriptes, also nach dem Laden/Refresh der Seite ...
da ist also doch ein "Wurm" im Konzept ...
Hello out there!
Das Textfeld ist per <style>input{display:block;}</style> vor-formatiert.
Nein, nicht _das_, sondern alle ...
if (document.formular.textfeld.style.display == "block")
... dem wärest du auf die Schliche gekommen, hättest du dir mal 'document.formular.textfeld.style.display' anzeigen lassen.
Du setzt anfangs ein Flag (natürlich außerhalb der Funktion):
textfeldSichtbar = true;
Außerdem speicherst du besser 'document.formular.textfeld' in einer Variablen, damit nicht bei jedem Funktionsaufruf das Element im Baum gesucht werden muss:
meinTextfeld = document.formular.textfeld;
In der Funktion dann:
if (textfeldSichtbar)
meinTextfeld.style.display = "none";
else
meinTextfeld.style.display = "block";
textfeldSichtbar = !textfeldSichtbar;
See ya up the road,
Gunnar
Hello out there!
Hy You!
Das Textfeld ist per <style>input{display:block;}</style> vor-formatiert.
Nein, nicht _das_, sondern alle ...
Ja - doch -
... dem wärest du auf die Schliche gekommen, hättest du dir mal 'document.formular.textfeld.style.display' anzeigen lassen.
Überschätz' mich nicht ... :-)
Nichts wird angezeigt.
Was ich rausgekriegt hab' ist, das folgendes wunschgemäß funktioniert:
if (document.formular.textfeld.style.display == "")
document.formular.textfeld.style.display = "none";
else
document.formular.textfeld.style.display = "";
Allerdings bin ich mir nicht sicher, welchen Status dem Textfeld
nach document.formular.textfeld.style.display = "" zugewiesen ist:
wieder block ??
Deinen Lösungsansatz werde ich entsprechend umsetzen. Herzlichen Dank
Mfg Frank
Hallo Frank.
if (document.formular.textfeld.style.display == "block")
document.formular.textfeld.style.display = "none";
else
document.formular.textfeld.style.display = "block";Leider klappt (bei mir) die if-Abfrage nicht.
Ja, den Status der derzeitig generierten Regeln im Stylesheet bekommst du so nicht. Aber es gibt Mittel und Wege, um dies zu bewerkstelligen.
Einen schönen Samstag noch.
Gruß, Mathias
Ja, den Status der derzeitig generierten Regeln im Stylesheet bekommst du so nicht. Aber es gibt Mittel und Wege, um dies zu bewerkstelligen.
Das ist ja eine aufregende Sache ... !
Einen schönen Samstag noch.
Ebenso - und Danke! Grüße Frank