D
daze
Hallo zusammen,
ist glaube ich mein erstes Posting hier, und gleich schon mal eine Frage.
Ich schreibe mir ein kleines Menü für eigene Zwecke und ich hab da ein fieses Problem mit der setTimeout() Methode.
Wie man unten in der Funktion collapse() sehen kann will ich das Submenü nach X Millisekunden schließen, es aber immer die Meldung, das mNode.obj in der Funktion setClassName() keine "properties" hat.
EDIT: "has no properties" meldet der Firefox, alert() meldet "undefined"
Ich habe in beiden Funktionen mit alert() getestet, ob mNode vorhanden ist. In collapse() kurz vor dem setTimeout ist das Objekt noch da, aber in der Funktion setClassName schon nicht mehr, warum auch immer. Vielleicht habe ich ein Brett vorm Kopf, und jemand kann es mir wegnehmen...
Auch wenn der Code etwas umständlich aussieht, das kommt vom vielen Probieren, aber imho sollte der Code Valid sein. Belehrt mich eines besseren.
ist glaube ich mein erstes Posting hier, und gleich schon mal eine Frage.
Ich schreibe mir ein kleines Menü für eigene Zwecke und ich hab da ein fieses Problem mit der setTimeout() Methode.
Wie man unten in der Funktion collapse() sehen kann will ich das Submenü nach X Millisekunden schließen, es aber immer die Meldung, das mNode.obj in der Funktion setClassName() keine "properties" hat.
EDIT: "has no properties" meldet der Firefox, alert() meldet "undefined"
Ich habe in beiden Funktionen mit alert() getestet, ob mNode vorhanden ist. In collapse() kurz vor dem setTimeout ist das Objekt noch da, aber in der Funktion setClassName schon nicht mehr, warum auch immer. Vielleicht habe ich ein Brett vorm Kopf, und jemand kann es mir wegnehmen...
Auch wenn der Code etwas umständlich aussieht, das kommt vom vielen Probieren, aber imho sollte der Code Valid sein. Belehrt mich eines besseren.
PHP:
function getObj(mNode)
{
if (isDOM) {
this.obj = document.getElementById(mNode);
this.style = document.getElementById(mNode).style;
} else if (isIE) {
this.obj = document.all[mNode];
this.style = document.all[mNode].style;
} else if (isNS4) {
this.obj = document.layers[mNode];
this.style = document.layers[mNode];
}
}
function setClassName(mNode, class_name)
{
mNode.obj.className = class_name;
}
function collapse(mNode, mLit, mTo)
{
if (!isDyn) return; // kein DHTML-Browser
mN = mNode; mL = mLit;
var mNode = new getObj(mNode);
var mLit = new getObj(mLit);
if (mLit.obj.className != off_class) setTimeout("setClassName('"+mL+"', '"+off_class+"')", mTo);
if (mNode.obj.className != soff_class) setTimeout("setClassName('"+mL+"', '"+soff_class+"')", mTo);
}
Zuletzt bearbeitet von einem Moderator: