JavaScript Probleme mit Integer-Übergabe

Crescender

Vice Admiral
🎅Rätsel-Elite ’24
Registriert
Dez. 2005
Beiträge
6.438
moin zusammen,
ich habe folgende funktion gebastelt:
Code:
function automat()
{		
	p = 0;
	for(t=0;t<=14;t++)
	{
		setTimeout("linksaendern(parseInt(p))",10000*t);
		p = p + 1;
	}
}

linksaendern(x) ist eine funktion, die auf ein array zugreift, in dem etwa 15 links drinstehen.
soweit so gut, problem ist eben, dass man der funktion eine variable übergeben soll, damit sie weiß, welchen link sie nehmen soll. genau dieses übergeben klappt aber nicht. jedenfalls nicht so, wie ich es gemacht habe. ich verzweifle aber auch langsam und seh den fehler einfach nicht, weswegen ich eure hilfe brauche!
ich hatte es auch schon so, dass ich der funktion linksaendern(x) die variable der for-schleife übergebe, hat alles immer denselben fehler, der link wird nicht gefunden. scheint so, alsob er nicht erkennt dass die übergebene variable ein int sein soll.

so long and greetz
 
ne, es ist ja kein vergleich sondern praktsich die deklaration von t für die for-schleife.

so long and greetz
 
ich denke so wie du das geschrieben hast kann es nicht funktionieren, denn das was du eigentlich machen möchtest bzw. bräuchtest, ist ein funktionszeiger bzw. ein pointer auf eine funktion (linksändern) die aus einer anderen funktion (settimeout) aufgerufen wird.

so wie du das geschrieben hast, übergibst du - meiner meinung nach - einen bloßen string, der die funktion repräsentieren soll, was er aber nicht tun kann, da es ja nur ein zeichenkette ("...") ist.

meiner meinung nach müßtest du das array als funkionsparameter übergeben ohne (""). interessant wäre auch die settimeout methode zu sehen.

so long,
stefan
 
setTimeout() ist eine javascript-funktion, die stammt nicht von mir. wenn ich die klammern weglasse passiert nicht viel und ich kriege in der fehlerkonsole des firefox den fehler:
"Fehler: useless setTimeout call (missing quotes around argument?)
Quelldatei: ******
Zeile: 38"

so long and greetz
 
xXstrikerXx schrieb:
Code:
function automat()
{		
	p = 0;
	for(t=0;t<=14;t++)
	{
		setTimeout("linksaendern(parseInt(p))",10000*t);
		p = p + 1;
	}
}

wie schon gesagt, der code kann nicht funktionieren, da du eine zeichenkette ("linksaendern(parseInt(p))") an die funktion übergibst, nicht aber den link selbst. außerdem ist die variable p völlig überflüssig, da t == p ist und somit substitierbar.

versuch mal folgendes (pseudocode):
Code:
function String linksaendern(int pos) {
  return link_array(pos);
}

function automat() {
  for (int i = 0; i < {größe_des_arrays}; i++) 
    setTimeOut(linksaendern(i), 10000 * t);
}

thats it!

PS: natürlich müßtest du noch div. fehlerprüfungen einbauen.
 
Zuletzt bearbeitet:
hmm, ich schieb dir nochmal den code von linksandern() nach, da ich irgendwie gerade nicht überblicke, was du da tust:

Code:
function linksaendern(x)
{
	fenster.location = Links[x];
}
sprich die funktion ändert den link eines geöffneten fensters. das array mit den links ist Links[].

so long and greetz
 
mensch, StefanZander du bist ein schatz! dein tipp war der entscheidende hinweis.

ich übergebe tatsächlich ja nur eine zeichenkette. ich muss also klarmachen, dass "t" nicht zur zeichenkette gehört. logisch. deswegen lautet der code:
Code:
setTimeout("linksaendern("+t+")",10000*t);

danke an alle für die hilfe! mein jacascript ist doch schon etwas eingerostet...

so long and greetz
 
Zurück
Oben