Abort (control stack overflow).
Kalle_B
- javascript
Hallöle,
verstehe nicht, was da überläuft (Opera) bei
var obj_alt;
function blinken( obj, art )
{
if ( art == 1 )
{
if ( typeof(obj_alt) != 'undefined' ) obj_alt.style.backgroundColor = '#fff';
obj_alt = obj;
}
if ( obj.style.backgroundColor == '#ffc' ) obj.style.backgroundColor = '#fff'; else obj.style.backgroundColor = '#ffc';
window.setTimeout( blinken( obj_alt, 0 ), 500 );
}
...
<td class=co onClick="blinken(this,1)">
...
Bei Klick wird die Hintergrundfarbe des zuvor geklickten Objekts weiss und
die Hintergrundfarbe des geklickten Objekts hellgelb, blinkt aber nicht.
Ich kann mehrfach klicken, der Abort tötet also nicht den Eventhandler.
LG Kalle
Hallo,
verstehe nicht, was da überläuft (Opera) bei
window.setTimeout( blinken( obj_alt, 0 ), 500 );
http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=window.setTimeout() möchte eine Zeichenkette als ersten Parameter haben. Ich lege Dir den Artikel Komfortable Timer-Funktionen von molily und Struppi in SELFHTML aktuell ans Herz.
Freundliche Grüße
Vinzenz
Hallo, Vinzenz,
window.setTimeout( blinken( obj_alt, 0 ), 500 );
http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=window.setTimeout() möchte eine Zeichenkette als ersten Parameter haben.
Au ja, da stand ich auf dem Schlauch. Jetzt mache ich es so:
window.setTimeout( "blinken( "+obj_alt+", 0 )", 500 );
und es kommt eine andere Fehlermeldung:
Error:
name: ReferenceError
message: Statement on line 1: Undefined variable: object
Backtrace:
Line 1 of unknown script
blinken( [object HTMLTableCellElement], 0 )
stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'
kann man das Objekt, das ursprünglich mit this übergeben wurde, nicht speichern für die Timeout- Funktion?
LG Kalle
Hi,
http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=window.setTimeout() möchte eine Zeichenkette als ersten Parameter haben.
Oder die Referenz auf eine Funktion.
Au ja, da stand ich auf dem Schlauch. Jetzt mache ich es so:
window.setTimeout( "blinken( "+obj_alt+", 0 )", 500 );und es kommt eine andere Fehlermeldung:
Error:
name: ReferenceError
message: Statement on line 1: Undefined variable: object
Backtrace:
Line 1 of unknown script
blinken( [object HTMLTableCellElement], 0 )
stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'
Die Fehlermeldungen von Opera sind manchmal auch nicht die vielsagendsten.
kann man das Objekt, das ursprünglich mit this übergeben wurde, nicht speichern für die Timeout- Funktion?
Klar, kann man.
Das andere Objekt, obj_alt, das hast du doch auch so zur Verfügung gestellt, dass es nicht bei jedem Aufruf übergeben werden muss ...
Schöner wäre es allerdings, das ganze OO umzusetzen.
Da wäre die zu speichernde HTML-Objekt-Referenz ein Attribut eines Objektes, auf dass die per setTimteout aufgerufene *Methode* dieses Objektes selbstverständlich Zugriff hat.
MfG ChrisB