

Anmelde-Formular

Strohhalm Spendenkonto
Konto-Inhaber: Mathias Bank
Konto-Nummer: 83 04 297
BLZ: 200 905 00
Kreditinstitut: Netbank AG
Hinweis: Die Spenden werden bis auf weiteres ausschließlich dafür eingesetzt, den Strohhalm gegen rechtliche Angriffe zu schützen. Ein anderer Verwendungszweck muss von der gesamten Administration genehmigt werden.
aktueller Spendenstand: 188.01 €

strohhalm Standard (aktiv) von baumeister
(Noch keine User-Stylesheets vorhanden)
Hinweis: Zum Wechseln der Styles muss ein Cookie akzeptiert werden. Jedes registrierte Community-Mitglied darf eigene Styles entwickeln und einreichen. Ausführliche Infos unter Styleswitcher-Hilfe.
Neue Styles an baumeister@strohhalm.org senden.

eventhorizon 27. Oktober 2004, 19:23
Moin zusammen!
Warum funktioniert das nur im IE/Opera und nicht beim Firefox??
function ToggleBox (obj,img){
if (obj.style.display == "block"){
obj.style.display = "none";
}else{
obj.style.display = "block";
}
}
http://edkp.de/engine/index.php
MFG
Eventhorizon
Juggler 27. Oktober 2004, 19:41
Hi eventhorizon,
also irgendwie kann ich dein Problem nicht nachvollziehen.
Erstens dieser unsägliche Ticker... UAAAHH! WEG DAMIT!
Dein Quellcode ist mir zu sehr vollgestopft mit Tabellen, als dass ich mich da durchwühle und suche, wo dieser Code wirken soll.
Dazu kommt, dass ich weder im IE noch im Firefox irgendwelche Probleme bemerken kann. Das Menü funktioniert im Firefox, im IE nicht, weil ich dort vor kurzen Active-Scripting ausgeschaltet habe und bisher zu faul war es wieder zu aktivieren.
Sorry, wenn dir das jetzt nicht weiterhilft, aber ein bisschen mehr Hinweise WO der fehler auftaucht, dürftest du schon geben. Am Code, den du gepostet hast ist jedenfalls wenig nichts ungewöhnliches zu entdecken.
MfG
Juggler
wahsaga 27. Oktober 2004, 21:43
> Warum funktioniert das nur im IE/Opera und nicht beim Firefox??
weil die funktion einfach sinnfrei aufgerufen wird ...
> <a href="javascript:ToggleBox(tb04)"
abgesehen davon, dass es zum aufrufen von javascript-funktionen eventhandler wie onClick gibt (javascript bitte nicht über href="javascript:..." einbinden, dass ist unfug) - was bitte ist deiner meinung nach tb04? wo hast du ein javascript-objekt dieses namens definiert? soweit ich sehe, nirgends ...
du hast einen div mit der id="tb04" - aber deshalb gehst du doch wohl (hoffentlich) nicht davon aus, dass automatisch ein javascript-objekt existieren würde, welches auf eben diesen div referenziert.
übergebe den wert der ID als textstring an die funktion - und sorge dann per getElementById() für den zugriff auf den div.
eventhorizon 27. Oktober 2004, 22:34
@Juggler:
>Erstens dieser unsägliche Ticker... UAAAHH! WEG DAMIT!
Ansichtssache. Aber ich habe schon einen Thread unter HTML geposted...
>Dein Quellcode ist mir zu sehr vollgestopft mit Tabellen,
Kann nicht sein. Ich benutze hauptsächlich DIV's.
@wahsaga:
>> Warum funktioniert das nur im IE/Opera und nicht beim Firefox??
>weil die funktion einfach sinnfrei aufgerufen wird ...
Sinnfrei ist wohl ein wenig übertrieben. Immerhin funktioniert es (meist ;-))
Ansonsten muss ich dich enttäuschen. Ich habe sowas ähnliches gedacht...
Habe das ganze nun mal kurz umoperiert:
SKRIPT:
function ToggleBox (obj){
theObject = document.getElementById(obj);
if (theObject.style.display == "none"){
theObject.style.display = "block";
}else{
theObject.style.display = "none";
}
}
AUFRUF:
<a onclick="ToggleBox(tb02)"
Ich hoffe, dass das jetzt würdig ist, nochmal unter die Lupe genommen zu werden...
Außerdem klappt's bei mir im Firefox immer noch nicht.
Firefox 0.9.3.
Cach schon geleert...
MFG
Eventhorizon
wahsaga 27. Oktober 2004, 23:27
> AUFRUF:
> <a onclick="ToggleBox(tb02)"
wenn ich dir schon sage, dass du einen textstring übergeben sollst ... dann denke ich mir da auch was bei.
eventhorizon 28. Oktober 2004, 01:30
<a onclick="ToggleBox('tb02')"...
okay?
Vielen Dank!
Es funktioniert.
Allerdings habe ich das Gefühl, dass es (aus irgend einem unerfindlichen Grund) nur bei jedem zweiten Klick funktioniert...
Gute Nacht erstmal.
MFG
Eventhorizon
eventhorizon 28. Oktober 2004, 10:35
So. Ein paar Stunden Schlaf waren ganz gut...
Nun passiert folgendes:
Wenn ich auf das entsprechende Feld mit dem MouseEvent klicke, passiert erst beim zweiten Klick etwas.
Habe ich das Feld einmal (durch einen zweiten Klick) verändert, so genügt im weiteren Verlauf ein einzelner Klick.
Warum das?
Hat das irgendwas mit dem Focus zu tun??
MFG
Eventhorizon
wahsaga 28. Oktober 2004, 11:35
> Wenn ich auf das entsprechende Feld mit dem MouseEvent klicke, passiert erst beim zweiten Klick etwas.
>
> Habe ich das Feld einmal (durch einen zweiten Klick) verändert, so genügt im weiteren Verlauf ein einzelner Klick.
die antwort ist ganz einfach:
per javascript kannst du style-eigenschaften nur dann abfragen, wenn sie entweder per javascript gesetzt wurden, oder per style-attribut direkt im element selber.
in einem style-bereich im head oder in einer externen CSS-datei definierte formatierungen kannst du mit javascript über das style-objekt nicht abfragen.
was passiert also?
deine funktion fragt ab,
> if (theObject.style.display == "none"){
das ist nicht der fall, weil der wert nicht wie oben beschrieben gesetzt wurde.
also geht's in den else-zweig,
> }else{
> theObject.style.display = "none";
jetzt wird die display-eigenschaft des elementes per javascript explizit auf "none" gesetzt. das war es zwar vorher auch schon, aber javascript "wusste" nichts davon.
beim nächsten aufruf der funktion weiß JS es jetzt aber - denn es hat "none" ja selber gesetzt.
also liefert
> if (theObject.style.display == "none"){
true, und es wird direkt in den if-zweig gesprungen, wo display jetzt auf "block" gesetzt wird.
jetzt funktioniert es also auch in allen folgenden fällen, weil der wert der display-eigenschaft von nun an per JS abfragbar ist.
welche lösungsmöglichkeiten gibt es?
wenn du immer mit dem versteckten div "anfangen" willst, dann kannst du die abfragelogik umdrehen:
function ToggleBox (obj){
theObject = document.getElementById(obj);
if (theObject.style.display == "block"){
theObject.style.display = "none";
}else{
theObject.style.display = "block";
}
}
== "block" trifft beim ersten aufruf nicht zu, da javascript ja wie gesagt dort noch gar keinen wert ermitteln kann - also wird ins else gesprungen, "block" wird explizit gesetzt.
beim nächsten aufruf kann "block" jetzt ausgelesen werden, es wird in den if-zweig gesprungen, "none" wird gesetzt. usw. usf.
wenn du nicht immer beim aufruf der seite mit "verstecktem" div starten willst - dann musst du halt dafür sorgen, dass javascript den wert der display-eigenschaft von anfang an auslesen kann - wie oben gesagt, geht das z.b. über direkte definition der eigenschaft am element,
<div id="tb02" style="display:none;">
eventhorizon 29. Oktober 2004, 14:16
Viiieelen Dank!!!
Wie soll das denn bitteschön ein normal Sterblicher wissen!?
Habe beides gemacht, da ich die meisten beim laden nicht darstelle und somit weniger tipperei anfällt...
MFG
Eventhorizon