Befehl funtzt innerhalb SetTimeout nicht mehr !??
TOM
- javascript
Hallo Forum
also gleich zur Sache ich hab folgende JavaScript-Funktion:
function operator(Name1, Name2){
[...]
if(wert != ''){
if(this.byid) setTimeout('document.getElementById(Name1).selectedIndex = 0',750);
else if(this.docall) setTimeout('document.all[Name1].selectedIndex = 0',750);
alert(wert + ' und ' + Name2 + ' AND ' + Name1);
}
}
So. Naja was passiert? gar nix. Das, was in SetTimeout steht wird nicht gemacht. wenn ich den Befehl ausserhalb von SetTimeout anwende gehts - komisch oder is da Müll drin?
Thx 4 help TOM
P.S.: Das Dokument ist HTML4.01 konform
Ach ja sorry, hab ich vergessen die variablen this.docall und this.timeout sind boolean und enthalten ob document.getelementByID und document.all möglich sind
MfG TOM
Hi TOM,
bei setTImeout kannst du nur JavaScript Variablen verwenden die Global sind. Lokale Variablen wie z.B. bei dir Name1 funktionieren nicht. Du musst diese dann vor dem aufruf, global machen, dann dürfte es gehen.
Gruß
ueps
Danke!
Das wusst ich gar nicht...
aber ich glaub dann pack ich den Teil in ne Funktion - is besser
thx nochmal
MfG TOM
Moin!
Das wusst ich gar nicht...
aber ich glaub dann pack ich den Teil in ne Funktion - is besser
Nö, wieso denn?
Du kannst dem setTimeout doch den _Wert_ der Variablen mitgeben:
An einem Beispiel:
Statt diesem:
setTimeout('document.getElementById(Name1).selectedIndex = 0',750);
nimmst du dieses:
setTimeout('document.getElementById("'+Name1+'").selectedIndex = 0',750);
Der Befehl des setTimeout wird dann gewandelt von
document.getElementById(Name1).selectedIndex = 0
in
document.getElementById("WertderVariable").selectedIndex = 0
Und das ist IMO genau das, was du willst.
- Sven Rautenberg
Hi
danke es geht, aber kannst du mir noch bisschen genauer erklären warum?
ich versteh das nämlich nicht. Warum sind die Variablen dann global??
MfG TOM
Hi,
ich versteh das nämlich nicht. Warum sind die Variablen dann global??
Wird setTimeout öfters aufgerufen, dann wären die lokalen Variablen ab dem zweiten aufruf ja nicht mehr gestzt und es würde zu Fehlern kommen. Wenn du nur den Wert der in der Vraible steht mit übergibst, oder eben eine globale Variable nimmst, besteht dieses Problem nimmer.
Gruß
ueps
Hi
Axo - die Variable is dann deshalb auch nicht global - alles klar
Also beide Wege funzen - habs schon probiert
danke an euch beide
MfG TOM