Doppelklick bei Aufklapptext
lvl
- javascript
Hi Leute,
vorne weg sollte ich sagen, das JS nicht wirklich mein Themengebiet ist.
Aber manchmal kommt man nicht wirklich drum rum.
So nun zu meinem Problem.
Ich habe folgenden JS code:
<script type="text/javascript" language="JavaScript1.2">
var angezeigt = false;
function versteckt(Wert, Icon, StatusText)
{
if (angezeigt)
{
document.getElementById(Wert).style.display = 'none';
angezeigt = false;
window.document.images[Icon].src = 'bullet_toggle_plus.png';
window.document.images[Icon].alt = 'geschlossen';
window.document.getElementById(StatusText).innerHTML = 'öffnen';
}
else
{
document.getElementById(Wert).style.display = 'block';
angezeigt = true;
window.document.images[Icon].src = 'bullet_toggle_minus.png';
window.document.images[Icon].alt = 'geöffnet';
window.document.getElementById(StatusText).innerHTML = 'schließen';
}
}
</script>
Um damit nun mein Text aufklappen zu lassen, benutze ich folgenden Code:
<img src="bullet_toggle_plus.png" style="border-width:0px;" alt="geschlossen" name="Icon1">
<a href="" onclick="versteckt('Test1', 'Icon1', 'StatusText1'); return false;" id="StatusText1">
öffnen
</a>
<span id="Test1" style="display: none">
TEST 1
</span>
<br /><br />
<img src="bullet_toggle_plus.png" style="border-width:0px;" alt="geschlossen" name="Icon2">
<a href="" onclick="versteckt('Test2', 'Icon2', 'StatusText2'); return false;" id="StatusText2">
öffnen
</a>
<span id="Test2" style="display: none">
TEST 2
</span>
Das ganze funktioniert auch im großen und ganzen. Jedoch gibt es ein kleines Problem:
Wenn ich "TEST 1" aufgeklappt habe und "TEST 2" aufklappen möchte, muss ich 2 mal auf den Link klicken.
Wenn ich jedoch "TEST 1" aufklappe und direkt wieder zuklappe benötige ich nur einen Klick.
Hat jemand eine Idee woran das liegen kann?
Hallo!
Das ganze funktioniert auch im großen und ganzen. Jedoch gibt es ein kleines Problem: ...
Das liegt daran, dass du die Variable "angezeigt" (oder so ähnlich) für alle Elemente verwendest.
D.h. wenn du Textblock A ausblendest ist angezeigt auf false. Wenn du jetzt Textblock B ausblenden willst, dann ist die Variable "angezeigt" false und damit wird versucht Textblock B einzublenden. Du merkst keinen unterschied, da Textblock B bereits angezeigt wird. Deshalb musst du zweimal klicken.
Das liegt daran, dass du die Variable "angezeigt" (oder so ähnlich) für alle Elemente verwendest.
und diese globale variable ist eigentlich überflüssig, denn du kannst die Eigenschaft display direkt abfragen:
if (document.getElementById(Wert).style.display == 'none') {
...