Hallöle;
"'a' is undefined"
so richtig klar ist mir das auch nicht, vor allem warum er sich auf
"a" bezieht, welches der _Wert_ des ersten arrayelements ist.
Aber das deine Funktion so nicht funktioniert ist eigentlich klar.
var Id, timeout=200;
function test(start,arr){
if(start==(arr.length-1)){
window.clearTimeout(Id);
alert('fertig');}
else{
alert("test("+start+","+arr+")");
vor allem hier wird alert gebeten den Rückgabewert von test()
auszugeben. Welcher ist das eigentlich?
start++;
Id = window.setTimeout("test("+start+","+arr+")",timeout);}}
hier wir die funktion dan nochmal, wieder rekursiv aufgegeben
es stellt sich für mich die Frage, was willst du eigentlich auf dem
Bildschirm sehen?
function testit(){
var arr = new Array('a','b','c','d');
test(0,arr);}
Arrays kann man sehr wohl auch in rekursiven funtionen übergeben:
In abwandlung deines konstrukts:
-------------------------------
function test(arr) {
if(arr.length==1) {
alert('fertig');
} else {
alert(arr);
test( arr.slice(1,arr.length) );
}
}
function testit() {
var arr = new Array('a','b','c','d','e','f');
test(arr);
}
--------------------------------
ps: ausserdem wuerde mich mal interessieren, warum setTimeout
nicht in iterativen schleifen funktioniert. zb. bei einer
for-schleife macht sich der timeout nur gesamten bemerkbar.
nun, wie willst du denn setTimeout auf eine For-schleife anwenden, es
geht eigentlich nur für funktionen. Für iterative Kontrollmechanismen
ist in JS keine "Bremse" vorgesehen.
bye eddie