toggle-probleme

orffyre

Erfahrenes Mitglied
Ich benutze einen Toggle-Befehl auf meiner neuen Site. Der sieht folgendermassen aus:

<script type="text/javascript">
var last = '';
var stat = 0;

function toggle(id)
{
if(stat==0)
{
document.getElementById(id).style.display = 'block';
stat = 1;
last = id;
}
else if((stat==1)&&(last==id))
{
document.getElementById(last).style.display = 'none';
stat = 0;
last = id;
}
else
{
document.getElementById(last).style.display = 'none';
document.getElementById(id).style.display = 'block';
stat = 1;
last = id;
}
document.test.stat.value = stat;
document.test.Id.value = id;
document.test.last.value = last;
}
</script>

Ich habe zwei Elemente, die ich togglen will, ein gif und ein javascript.
Die spreche ich folgendermassen an:

Die gif:

<p align="center"><a href="#" onClick="toggle('test1')" class="nav"><img src="images/bild.gif" title="bild" width="120" height="12"></a></p>
<div style="display:none;" id="test1">
<p align="center"><a href="http://www.egal.de"><img src="images/bild2.gif" width="120" height="120"></a>

Das script:


<p align="center"><a href="#" onClick="toggle('test2')" class="nav"><img src="images/bild.gif" title="bild" width="120" height="12"></a></p>
<div style="display:none;" id="test2">
<p align="center">
<script language="javascript" type="text/javascript" src="http://egal2.de"></script>
</div>
</div>
Wenn ich jetzt eines von beiden öffne und dann noch das andere dazu, dann schliesst sich das vorherige geöffnete.
Wie kann ich das einrichten, dass beide sich nur schliessen, wenn man auf die Grafik (images/bild) klickt?

Auch bringt mein IExplorer komische Fehlermeldungen, wenn ich die Site und den Toggle-Effekt testen will, etwa sowas:
"es ist ein Laufzeitfehler aufgetreten"
"Fehler: 'document.test.stat' ist null oder kein Objekt"

Weiss irgendjemand warum?! Und kann mir auch jemand für das obige Problem helfen?
Für Informationen sage ich danke im Vorraus!

Gruss,
orffyre

P.S.: Es sind im Prinzip Detailfehler, der Effekt funktioniert, aber wie gesagt, diese zwei Sachen stören noch
 
Zuletzt bearbeitet:
Zu dem "Toggle'n"..... indem du die "display"-Eigenschaft des anderen <div> nicht änderst, dann bleibt es auch da.

Am Einfachsten geht die ganze Sache, wenn du direkt die display-Eigenschaft des jeweiligen Elementes abfragst und dementsprechend änderst:
Code:
<script type="text/javascript">
<!--
function toggle(strId)
{
    obj = document.getElementById(strId);
    obj.style.display = (obj.style.display == 'block') ? 'none' : 'block';
}
//-->
</script>
....dadurch sparst du dir das Speichern des aktuellen Zustandes in Variablen.

Zu den Fehlermeldungen.. die werden dadurch verursacht:
Code:
 document.test.stat.value = stat;
document.test.Id.value = id;
document.test.last.value = last;
...was soll dieser Teil der Funktion bewirken?
 
Cool, cool, merci beaucoup!

Hat beides gestimmt, hab jetzt einfach dein kleineres in den header gepackt und jetzt funktionierts so, wie ich mir das vorgestellt hab.
Danke!

Jetzt ist es nur so, dass wenn ich die Bereiche, die ich togglen will schliesse, mein Browserfenster immer wieder hoch an den Anfang fährt. Ich glaube, dass es durch die Raute in den Links kommt, dann denkt mein Browser, er müsste wieder zum Anfang der Site springen.

Egal, werd den so benutzen, macht ja nix.

Gruss,
orffyre
 
Ihr habt da schon a bissl arg viel den absoluten Durchblick, kann das sein ;)

Funktioniert alles problemlos.

So, jetzt müsste ich nur noch wissen, wie ich die Farbe der Links meines Scriptes ändern kann.
Also, ich hab ja da so ein Script, dass ich toggle; wenn das geöffnet wird, dann kommen n'paar Links zum Vorschein.
Jetzt nehmen wir mal an, die Links wären rot, ich hätte aber gerne weisse links, um das im Kontrast zur Hintergrundfarbe zu bekommen.
Kann ich das ohne CSS ändern?
Ich kann auf das Script nur über eine URL-Adresse zugreifen.

Bei normalen Links hatte ich die Sache mit class="nav" gelöst. Aber das kann ich nur hintenan im Code stellen, wenn ich die Links auch im Quelltext wirklich habe.
Bei dem Javascript ist das aber nicht der Fall und mein class nicht.

Also, danke schonmal für die Hilfe, es hat mich definitiv weitergebracht!
Sehr gutes Forum hier!

Gruss,
orffyre
 
Okay, hab das mit den Links jetzt mit CSS hingekriegt.

Ansonsten danke nochmal für die Hilfe!

Gruss,
orffyre
 
Hey!

Könntest du mal bitte deinen Link posten? Ich hatte soetwas bei http://www.emuleplus.info gesehen... Aber ohne die Funktion mit dem schließen.
Also wenn man auf einen ShowHide Link klickt das sich der vorherige nicht schließt....

Dürfte ich dein Script denn auch verwenden? Fänd ich echt nett :)

Danke schonmal!

Achso...Ich bin ein absoluter was soetwas angeht. Deswegen würde ich dich bitten, mir vielleicht die gesamte Original Version zu geben, so dass wenn man auf einen Link klickt (s. emuleplus.info) sich dieser öffnet, und wenn man auf den anderen klickt, sich der vorherige wieder schließt und der neue öffnet....

Nochmal Danke! Wenn du das machen könntest würdest du mich echt weit voran bringen
 
Zuletzt bearbeitet:
Also der Script-Befehl selber sieht so aus:

<!--
function toggle(strId)
{
obj = document.getElementById(strId);
obj.style.display = (obj.style.display == 'block') ? 'none' : 'block';
}
//-->

Dann kannst du einzelne Elemente folgendermassen ansprechen:

<a href="javascript:toggle('test1');void(0);"><img src="images/beispiel.gif" title="beispiel" width="100" height="12"></a>
<div style="display:none;" id="test1">...</div>

bzw.

<a href="javascript:toggle('test2');void(0);"><img src="images/beispiel2.gif" title="beispiel2" width="100" height="12"><br>
</a>
<div style="display:none;" id="test2">
<p>
<script language="javascript" type="text/javascript" src="irgendein_Script_zum_Beispiel"></script>
</p></div>

Und so verfährst du halt weiter mit jedem weiteren Element! Du kannst auf die Grafiken auch verzichten, war nur bei meinem Fall gewollt.

Das Script selber kannst du natürlich verwenden, wie du Bock hast! Ist ja hier niemand von Micro$oft und hält darauf ein Ideen-Patent oder so!
;)
Gruss,
orffyre
 
Super! Danke erstmal!

Ist das jetzt der Befehl dass sich das andere Menu wieder versteckt, wenn man auf einen neuen "Toggle-Link" klickt?

Und noch eine Frage: Wäre es möglich, dass ich mehrere Tabellen übereinander lege, so dass wenn ich auf verschiedene "Toggle-Links" klicke, sich die immer an der selben Stelle öffnen?
Also als Beispiel hier der Link zu einem Flash-Menu...So sollte das auch aussehen (natürlich ohne Übergänge), nur dass man auf die Links klicken muss (evtl. auch drüber fahren, wenn das möglich wäre). -> http://www.mambotheme.com/mambo_macro_flash_menu/

Ich hoffe ihr wisst was ich meine mit "an der selben Stelle erscheinen"...

Danke
 

Neue Beiträge

Zurück