Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Javascript und variablen überprüfung





Frage

Hallo ich bin gerade dabei eine Homepage ([url=http://www.xphomepage.de]xphomepage[/url]) zu machen. dabei stosse ich immer wieder auf einen Fehler : Ich habe die Startleiste und dort wird durch ein onmouseover die Funktion subzeig() aufgerufen. Bis hierhin kein Prob. Wenn der user von dem Button runtzergeht um ihm Submenü was anzuklicken geht das Untermenü weg. also : window.setTimeout gesetzt der nah 1 Sek das submenü wegmacht. Wenn der USer im untermenü rumfummelt so setzt er immer die Variable wega auf false. Jetzt soll die Funktion weg() die durch das Timeout aufgerufen wird prüfen ob die Variable wega auf true steht. wenn auf true dann submenü zu wenn nicht offen lassen. Das geht aber nicht. Hier der Script : [code]<script language=Javascript> function startunter(h) { on (h,'../style/start/startunter.jpg','../style/start/startunterover.jpg'); subzeig(); } </script>[/code] Das ist der Code der durch den User aufgerufen wird wenn er im Submenü rumfummelt. [code]<script language="JavaScript"> var wega="false"; function ende() { if (document.getElementById) { parent.haupt.document.getElementById("menu1").style.visibility = "hidden"; document.images["bild"].src="../style/start/start.jpg"; parent.haupt.document.getElementById("topstart").style.visibility = "hidden"; } } function start() { if (document.getElementById) { parent.haupt.document.getElementById("menu1").style.visibility = "visible"; document.images["bild"].src="../style/start/activestart.jpg"; parent.haupt.document.getElementById("topstart").style.visibility = "visible"; parent.haupt.document.onmouseup=ende; } } function subzeig() { wega="false"; parent.haupt.document.getElementById("submenu1").style.visibility = "visible"; } function subweg() { wega="true"; window.setTimeout('weg()', 1000); } function weg() { if (wega == "true") { parent.haupt.document.getElementById("submenu1").style.visibility = "hidden"; } else { parent.haupt.document.getElementById("submenu1").style.visibility = "visible"; } } </script>[/code] Und hier liegt der eigentliche Fehler der User ruft die Funktion subzeig() auf die die Variable wega auf false setzt. Da der window.settimeout die Funktion nach 1 sek aufruft soll die prüfen ob das submenü wirklich zugemacht werden soll. Das aber geht nicht Hoffe ihr könnt mir helfen. mfg. Fabi15

Antwort 1 von rfb

Kannst du mal einen Link angeben wo das Problem in Arbeit zu sehen ist (ich möchte mich nicht erst durch deine Homepage wühlen)

Außerdem solltest du
Zitat:
Das aber geht nicht
ein bisschen genauer fassen:
- was genau geht nicht?
- was passiert stattdessen?
- welchen Wert haben die Variablen, hier insbesondere wega?
- wieso nutzt du 2 Scriptbereiche?

Anmerkungen:
<script language=Javascript>

ist in neueren (X)HTML-Versionen nicht mehr zulässig, korrekt ist
<script type="text/javascript">

sinnvoller als
wega = "true" / "false"
ist
wega = true / false
(kein String sondern boolean)

Antwort 2 von Fabi15

den script gibbet hier zu sehen www.xphomepage.de. Du musst den Popup zulassen oda auf den Link klicken. Anders geht es nicht, da der Div Bereich in einem anderen Frame liegt der durch den Popup geöffnet wird.

Ich nutze zwei Script brereiche, weil der link der den setTimeout unterbrechen soll durch mouseover die funktion aufruft dabei aber nicht nur der Timeout unterbrochen werden soll sondern auch das Hintergrundbild des Links. Alles wird per JS gemacht.

mfg
Fabi15

P.S.: Alle Variablen sind richtig

Antwort 3 von rfb

Zitat:
Ich nutze zwei Script brereiche, weil der link der den setTimeout unterbrechen soll durch mouseover die funktion aufruft dabei aber nicht nur der Timeout unterbrochen werden soll sondern auch das Hintergrundbild des Links.
das ist kompletter Unsinn, browserintern wird das sowieso zu einem Bereich, der sich im jeweiligen windows-object befindet, zusammengefasst.

Ist es irgendwie schwierig, den Link zur Seite rauszusuchen?
Ich hätte gern den URL genau der Seite, in der sich das Script befindet, da mich der Rest inhaltlich nicht interessiert und ich das Layout absolut unübersichtlich finde.

Antwort 4 von Fabi15

www.xphomepage.de/php/start.php

Antwort 5 von rfb

im body werden Funktionen mit falschen Parametern aufgerufen, das reicht evtl. schon um weitere JavaScript-Funktionen abzubrechen.

Schau dir das Ergebnis mal in der Firefox-JavaScript-Fehlerkonsole an.

Du solltest zudem document.all durch document.getElementById ersetzen.

Antwort 6 von Fabi15

habe ich ich möchte nun den setimteout der durch eine Varaible gesetzt wird abbrechen

mfg
Fabi15

Antwort 7 von rfb

Zitat:
habe ich
was genau hast du.

Bitte entschuldige meine Nachfragen, aber deine Beschreibungen sind extrem ungenau.

Die Fehlermeldungen im FF sind noch alle da, das vorsinflutliche document.all wird auch noch bemängelt (jede Sekunde 1mal).

Deine Frage verstehe ich nicht.

Antwort 8 von Fabi15

das document.all wurde jetzt durch docuument.getElementById ersetzt. Es handelte sich hierbei um die Uhr rechts.

Ich möchte wenn der User den Button klickt kommt ein Menü.Dieses Menü macht bei onmouseover ein Submenü auf. Das Problemm ist wenn der USer diesen Bereich verlässt wird das Submenü geschlossen und das will ich nur dann wenn der User nicht mehr im Submenü ist. Das Submenü geht aber zu egal ob der User da was drin macht oder nciht.

Ich hoffe jetzt das Problemm ordentlich geschildert zu haben. Wenn nicht dann bescheid sagen.

mfg
Fabi15

Antwort 9 von Fabi15

die anderen Fehler werden noch beseitigt. Diese Seite ist noch im Bau und alles ist noch offen.

Sry Für Doppelpost.

mfg
Fabi15

Antwort 10 von rfb

Zitat:
die anderen Fehler werden noch beseitigt. Diese Seite ist noch im Bau und alles ist noch offen
"im Bau" sind alle Seiten im Internet, das ist kein Argument.

Bitte beseitige erst einmal die angezeigten JavaScript-Fehler bevor du nach den Gründen für unerwartetes Verhalten forschst. Weiteres posten hat hier vorher keinen Sinn!

Das ist eine Zeile
var bid=bid

die Unsinn ist, da bid in der Funktion schon existiert, außerdem sind die Funktionsaufrufe im body mangelhaft.
Tipp: entferne die Tabs aus dem Script!

Antwort 11 von Fabi15

wie bekomme ich denn den document.getElemntById(bid) no properties Fehler weg das ist der einzige wo ich nicht weiter weiss

mfg
Fabi15

Antwort 12 von rfb

du solltest eben in der Funktion einfach mal prüfen, ob die Elemente, die du da manipulieren willst, überhaupt existieren.