Hi,
threadtitel klingt vieleicht etwas komisch aber das ist mein Problem:
Ich habe einen vorgefertigten Code, welchen ich stark Modifiziere.
Und ich habe hier 2 funktionen welche sich gegenseitig aufrufen, also ne endlosschleife. Dabei geben die funktionen Werte an die andere Weiter, nur wird bei einer dies nicht erkannt, nachfolgend der code um das zu verdeutlichen:
- Funktion:
function func1(var1, var2, var3){
if (document.all||document.getElementById)
flashing=setInterval(„func2(var1, var2, var3)“,flashspeed)
}
- Funktion:
function func2(varn, varm, varmessage){
…
setTimeout(„func1(varn, varm, varmessage)“,flashpause)
return
}
wenn ich das ganze nun ausführe, bekomme ich den Fehler das „var1“ Undefiniert ist. Kann mir wer sagen warum das so ist / wie ich das ändern kann oder was eigentlich die funktion „setIntervall“ bewirkt? (wenn ich die 2. function ohne parameter aufrufe, geht es, nur das dann halt die parameter fehlen
)
Das ganze war übrigens vorher ein einziges Script mit Globalen Variablen, ich brauches aber mit lokalen damit ich die funktion mehrfach verwenden kann. D.h. „var1“, „varn“ etc. waren vorher globale variablen bzw. die gleichen (also „var1“ = „varn“ etc.), darum brauchte der Aufruf der Funktion „func2“ vorher auch keine Parameter.
Mfg
Dead_Masters
Hi,Dead_Masters
Schau dir mal die Änderungen an, vieleicht hilft es …
function func1(var1, var2, var3)
{
if (document.all||document.getElementById)
hilfsVar = func2(var1, var2, var3);
flashing=setInterval(hilfsVar ,flashspeed)
}
function func2(varn, varm, varmessage)
{
hilfsVar = func1(varn, varm, varmessage);
setTimeout(hilfsVar,flashpause)
return
}
flashing und setTimeout scheinen eigene Funktionen zu sein, zumindest kenn ich sie nicht. Die erwarten mE als ersten Parameter einen String, das könnte das Ergebnis deiner functions sein (in den hilfsVars).
Oder sie erwarten quasi einen „Funktionsaufruf“ als String, der dort ausgewertet wird (eval könnte da im spiel sein, kenne ich aber nicht)
dann nkönnte folgendes helfen:
hilfsVar = „func1(“ + varn + „,“ + varm + „,“ + varmessage +")";
Das würde einen String für den Aufruf herstellen, der die Werte der vars, also nicht die Bezeichner, enthält.
Das wird zwar so nicht direkt klappen, ber vieleicht ist es die Idee, dich auf die richtige Spur zu bringen.
mfg
Dirk
thx, das erstere hatt funktioniert 
d.h. die funktion fängst an, bzw. führt den ersten durchlauf aus aber macht dann nicht weiter…
gibt es für JavaScript nicht sone art Debugger? damit man sieht was der genau macht? (würde die sache um einiges einfacher machen)
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi,Dead_Masters
ein Debbugger ist mir nicht bekannt, vieleicht kennt jemand anderes einen.
Aber:
Ich gehe oft so vor:
Alert("hier bin ich wert: " + wert);
vor/in nach der Stelle, wo ich das Problem wittere. Ggfs. wie einkreien, D.h. diesen Alert wandern lassen.
Hast du dir mal die „gerufenen“ functions angeschaut? Was machen denn die? Was erwarten denn die?
mfg
Dirk
P.S.: Kannst du eine Seite oder den Code anbieten?
Ich gehe oft so vor:
Alert("hier bin ich wert: " + wert);
vor/in nach der Stelle, wo ich das Problem wittere. Ggfs. wie
einkreien, D.h. diesen Alert wandern lassen.
klingt gut, werd ich mal versuchen
Hast du dir mal die „gerufenen“ functions angeschaut? Was
machen denn die? Was erwarten denn die?
ehrlichgesagt keine ahnung, weil diese funktionen nicht in dem Script definiert werden… also müssens ja standartfunktionen sein.
Und is das eine nicht ne globale Variable?
hm mir is da aber grad ne zusammengehörigkeit aufgefallen:
clearInterval(flashing)
flashing=setInterval(hilfsVar,flashspeed)
P.S.: Kannst du eine Seite oder den Code anbieten?
im moment nicht 
Schau mal dort:
http://de.selfhtml.org/javascript/objekte/window.htm…
Siehe da:
Test
<!–
var aktiv = window.setInterval(„Farbe()“,1000);
var i = 0, farbe = 1;
function Farbe() {
if(farbe==1)
{ document.bgColor=„yellow“; farbe=2; }
else
{ document.bgColor=„aqua“; farbe=1; }
i = i + 1;
if(i >= 10)
window.clearInterval(aktiv);
}
//–>
Tatsächlich erwartet setIntervaleinen String und eine Zahl. In dem String solltest du halt alles einbauen. Da deine vars nicht mehr global sind (?) mußt du die werte übergeben:
hilfsVar = „machwas(“ + var + „)“;
var aktiv = window.setInterval(hilfsVar ,1000);
probiers mal aus.
mfg
Dirk
Schau mal dort:
http://de.selfhtml.org/javascript/objekte/window.htm…
nice nice 
Tatsächlich erwartet setIntervaleinen String und eine Zahl. In
dem String solltest du halt alles einbauen. Da deine vars
nicht mehr global sind (?) mußt du die werte übergeben:
hilfsVar = „machwas(“ + var + „)“;
var aktiv = window.setInterval(hilfsVar ,1000);
naja ich hab rumprobiert und herausgefunden dasses mit dem:
hilfsVar = func1(var1, var3);
flashing=setInterval(hilfsVar,flashspeed)
mit der Werteübergabe hinhaut, allerdings geht das auch folgendermaßen:
flashing=setInterval(func1(var1, var3),flashspeed)
also brauch man die HilfsVariable nicht unbedingt 
wenn ich das ganze aber mit:
hilfsVar = „func1(“ + var1 + „,“ + var3 + „)“;
flashing=setInterval(hilfsVar,flashspeed)#
mache, bekomm ich fehlermeldung, das das was in var3 steht ist undefiniert ist, d.h. der sieht den String dann als Variable an 
Ich bin jetzt auch soweit, das die funktion 1 mal voll durchläuft und auch alle werte Stimmen, jedoch bekomm ich wennse fertig ist ne Fehlermeldung das ein Argument ungültig sei… und die ausführung bricht ab…
ich habe ein alert am anfang und ende der Funktion und das letzte meldet sich, jedoch kommt das erste nicht wieder (obwohl es söllte), stattdessen halt nur die fehlermeldung 
ob das daran liegt, das ich parameter übergebe? (also das die intervall funktion die Parameter nur 1mal übergeben kann oder so…)
ob das daran liegt, das ich parameter übergebe? (also das die
intervall funktion die Parameter nur 1mal übergeben kann oder
so…)
hm ich hab grad nochmal meine gehirnwindungen arbeiten lassen und bin zu folgender erkenntnis gekommen:
ich schätze mal das Problem sind die lokalen Variablen, weil ich die func1 ja aus der func2 starte und dabei Variablen übergebe (var 1 und 3) wenn jetzt die Intervall funktion die func1 ausführt wird ddie func2 sozusagen geschlossen und die Variablen gehen verlohren…
später:
so hab ma weiterprobiert und weis was mein Problem lösen könnte:
Ich muss es erreichen das die func1 ihren eigenen Ruckgabewert(welchen ich gerade eingebaut habe) bei der wiederholung durch die intervall funktion als wert 1 (var1) übernimmt… hm eig auch den Wert 2 (var3)…
wie kann man eigentlich 2 werte zurückgeben und beide in 2 verschiedene Variablen speichern? (wenn das geht hab ich vieleicht eine lösung)
hi,
Zwei Werte übergeben? kann ich mir erstmal nicht vorstellen, weil:
nn = func( …);
aber globale vars könnten helfen:
var a;
function f1()
{
alert(a);
a = 1;
}
function f2()
{
alert(a);
a = 99;
}
So etwas sollte gehen. Die „externen“ vars sind dann global!
Probiers mal aus. Dann kannst du dir die ganze Übergabe schenken. Allerdings ist das Übergeben idR der sauberere Weg.
Ggfs. kann man die vars in ein Array packen und das übergeben. Hab ich aber noch nicht versucht.
mfg
Dirk