Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Togglefunktion UND Link öffnen
Frage
Hallo!
Ich weiß nicht, wie ich das am besten formulieren soll, weil ich mich nicht so gut mit Javascripts auskenne. Ich habe eine function, die texte "togglet". Also ich klicke auf einen Link und daraufhin erscheint ein bisher verborgener Text.
"<a href="javascript:togglediv('child2,1')" target="">xyz</a>"
Ist es möglich, dass beim Klicken jetzt zusätzlich noch ein Link geöffnet wird?
Danke
Antwort 1 von Dr.Ma-Busen
Moin!
Nimm das
MfG
Dr. Ma-Busen
Nimm das
javascript:togglediv('child2,1') aus den Link raus und schreibe es am besten in den Event-Handlern onClick("togglediv('child2,1')") und in den href- Attribut schreibst du dann den Link der beim Klick auf den "Text" geöffnet werden soll.MfG
Dr. Ma-Busen
Antwort 2 von Johannes.O
Danke für die schnelle Hilfe!
Jetzt gehts aber leider noch weiter.
"function togglediv(x)
{
if (document.getElementById)
{if (document.getElementById(x + "div").style.display == "none")
{document.getElementById(x + "div").style.display = "block";
document.getElementById(x + "cell").firstChild.nodeValue ="-";
}
else
{document.getElementById(x + "div").style.display = "none";
document.getElementById(x + "cell").firstChild.nodeValue ="+";
}
}
else
if (document.all)
{if (document.all[x + "div"].style.display == "none")
{
document.all[x + "div"].style.display = "block";
document.all[x + "cell"].innerText = "-";
}
else{
document.all[x + "div"].style.display = "none";
document.all[x + "cell"].innerText = "+";
}
}
}
</script>"
das ist der code.
1) Ist es möglich, das aktuell offene div zwischenzuspeichern und an eine andere Seite zu übergeben? Das Problem ist ja, wenn man sich durch den schönen Baum durchgeklickt hat und dann einen link aufruft, auf der neuen Seite der Baum wieder kompeltt geschlossen ist.
2) Ist es möglich das Script so umzuschreiben, dass immer nur eine oberrubrik offen ist?
Jetzt gehts aber leider noch weiter.
"function togglediv(x)
{
if (document.getElementById)
{if (document.getElementById(x + "div").style.display == "none")
{document.getElementById(x + "div").style.display = "block";
document.getElementById(x + "cell").firstChild.nodeValue ="-";
}
else
{document.getElementById(x + "div").style.display = "none";
document.getElementById(x + "cell").firstChild.nodeValue ="+";
}
}
else
if (document.all)
{if (document.all[x + "div"].style.display == "none")
{
document.all[x + "div"].style.display = "block";
document.all[x + "cell"].innerText = "-";
}
else{
document.all[x + "div"].style.display = "none";
document.all[x + "cell"].innerText = "+";
}
}
}
</script>"
das ist der code.
1) Ist es möglich, das aktuell offene div zwischenzuspeichern und an eine andere Seite zu übergeben? Das Problem ist ja, wenn man sich durch den schönen Baum durchgeklickt hat und dann einen link aufruft, auf der neuen Seite der Baum wieder kompeltt geschlossen ist.
2) Ist es möglich das Script so umzuschreiben, dass immer nur eine oberrubrik offen ist?
Antwort 3 von Dr.Ma-Busen
Moin!
Ist alles möglich ;)
Zum zwischenspeichern kannst du eine einfach variable nehmen (var speicher; o.s.ä.)
und auf der neuen Seite dann den Baum zu öffnen.
Problem ist nur wenn du auf ein Link klickst und die Seite neu, bzw. eine andere geladen wird, dann werden auch die Variabeln gelöscht. Müsstest die Variable also in ein Frame packen welches wärend der ganzen besuchszeit nicht verändert wird.Falls du nicht mit Frames arbeitest, dann bleibt dir entweder nur noch den wert in ein Cookie zu speichern, oder du übergibst den Wert mit der URL an die neue Seite und wertest das dann aus.
Und damit nur eine Oberrubrik offen ist speicherst du den wert auch in einer Variable und prüfst bei jeden durchlauf des Scriptes ob die neue Rubrik auch eine Oberrubrik ist. Wenn ja dann schliesst du die alte. Dessen wert/referenz hast du ja in der Variable stehen.
MfG
Dr.Ma-Busen
Ist alles möglich ;)
Zum zwischenspeichern kannst du eine einfach variable nehmen (var speicher; o.s.ä.)
und auf der neuen Seite dann den Baum zu öffnen.
Problem ist nur wenn du auf ein Link klickst und die Seite neu, bzw. eine andere geladen wird, dann werden auch die Variabeln gelöscht. Müsstest die Variable also in ein Frame packen welches wärend der ganzen besuchszeit nicht verändert wird.Falls du nicht mit Frames arbeitest, dann bleibt dir entweder nur noch den wert in ein Cookie zu speichern, oder du übergibst den Wert mit der URL an die neue Seite und wertest das dann aus.
Und damit nur eine Oberrubrik offen ist speicherst du den wert auch in einer Variable und prüfst bei jeden durchlauf des Scriptes ob die neue Rubrik auch eine Oberrubrik ist. Wenn ja dann schliesst du die alte. Dessen wert/referenz hast du ja in der Variable stehen.
MfG
Dr.Ma-Busen
Antwort 4 von Johannes.O
Ok ich hab mich bisher ganz gut da durchgeschlagen. Bekomme die Variable über die Url auf die andere Seite und kann sie mir da anzeigen lassen. wenn ich jetzt allerdings die funktion togglediv(meinevariable) ausführen will, gibt der expl. mir den fehler "Objekt erforderlich". Ich habe auch probiert die Funktion togglediv('child1') auszuführen funktioniert alles nicht
{if (document.getElementById(x + "div").style.display == "none")
die Zeile passt ihm nicht. Im debugger habe ich mir anzeigen lassen, ob x auch wirklich den wert 'child1' annimmt. Tut es auch. Warum will er jetzt noch irgendein objekt???
{if (document.getElementById(x + "div").style.display == "none")
die Zeile passt ihm nicht. Im debugger habe ich mir anzeigen lassen, ob x auch wirklich den wert 'child1' annimmt. Tut es auch. Warum will er jetzt noch irgendein objekt???
Antwort 5 von Johannes.O
Ohohoh! Das tut weh! Sry! War eigene Dummheit. In der function wird abgefragt, ob child1 schon sichtbar ist oder nicht und ich wollte sie schon ausführen, als es child1 noch nichtmal gab...

