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
- was genau geht nicht?
- was passiert stattdessen?
- welchen Wert haben die Variablen, hier insbesondere wega?
- wieso nutzt du 2 Scriptbereiche?
Anmerkungen:
ist in neueren (X)HTML-Versionen nicht mehr zulässig, korrekt ist
sinnvoller als
Außerdem solltest du
Zitat:
Das aber geht nicht
ein bisschen genauer fassen:Das aber geht nicht
- 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
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.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.
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.
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
mfg
Fabi15
Antwort 7 von rfb
Zitat:
habe ich
was genau hast du.habe ich
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
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
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.die anderen Fehler werden noch beseitigt. Diese Seite ist noch im Bau und alles ist noch offen
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
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.