PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wieso fehler?(javascript)



GU4RDI4N
02-05-2005, 17:13
hi,
wieso kommt hier:
"
function getvar(usn,var,tab)
{
document.vari.tab = tab;
document.vari.var = var;
document.vari.usn = usn;
document.vari.want = "have";
document.vari.submit();
window.setTimeout("return parent.variabl.in", 1000);
}
"

dieser fehler:
"
Fehler: missing formal parameter
Quelldatei: http://localhost/projekte/projekt2/index.php
Zeile: 4, Spalte: 24
Quellcode:
function getvar(usn,var,tab)
"

was heisst das?
braucht der noch irgendne zusätzliche variable?

BlueJay
02-05-2005, 21:57
window.setTimeout("return parent.variabl.in", 1000);


meines Wissens frisst setTimeout als erstes Argument einen Funktionsaufruf(samt Parameter) und keine Anweisung.

GU4RDI4N
03-05-2005, 12:41
da liegt der fehler zwar nicht,
aber wenn da noch einer ist, kann das ja auch geklärt werden.

wie könnte mann den sowas sonst realiesieren?
dass die funktion erst mit zeitverzögerung das ergebniss zurückgibt?

ContainerDriver
03-05-2005, 18:05
Hallo.
Ich glaube, so kannst du das nicht schreiben.

Eine Lösung für dein Problem könnte die folgende sein:
du schreibst dir eine Wrapper-Funktion, die die eigentliche Funktion verzögert aufruft.
Das Problem mit der Rückgabe könntest du über eine globale Variable Lösen.

Gruß, Florian

GU4RDI4N
03-05-2005, 18:42
wrapper-funktion sagt mir grad nix.
auf zu google, wikipedia, selfhtml.

BlueJay
03-05-2005, 19:11
hi,
Zeile: 4, Spalte: 24
Quellcode:
function getvar(usn,var,tab)


reserviertes Wort erwischt. Normalerweise macht man damit was platt.

BlueJay
03-05-2005, 19:19
Das Problem mit der Rückgabe könntest du über eine globale Variable Lösen.


Ich dachte eher an so ein Konstrukt wie:

var ret=parent.variabl.in;
ret="zeigs_mir("+ret+")";
window.setTimeout(ret, 1000);

und:

function zeigs_mir(rein) { return rein; }

GU4RDI4N
03-05-2005, 21:10
thx,

kanns grad nicht ausprobiern,
bin grad im windows zum zoggen.
mein server leuft unter linux auf der andern platte.
kb zum neustart.
wenn probs auftauchen, meld ich mich wieder.

GU4RDI4N
04-05-2005, 18:30
funktioniert leider nicht.
das return muss innerhalb der ersten funktion sein,
und nicht in dem zeigs_mir().
denn sonst gibt die funktion zeigs_mir() das ergebniss nur an die erste funktion zurück.

aber anscheinend funktioniert:
function getvar(usn,myvar,tab)
{
document.vari.tab.value = tab;
document.vari.myvar.value = myvar;
document.vari.usn.value = usn;
document.vari.want.value = "have";
document.vari.submit();
window.setTimeout("", 1000);
return parent.variabl.rein;
}

aber er sacht das er parent.variabl nicht kennt.

ich hab den gesamten client-code als anhang hinzugefügt

BlueJay
05-05-2005, 07:54
return parent.variabl.rein;

aber er sacht das er parent.variabl nicht kennt.


Ist das Frame schon geladen, wenn du die Funktion drauf loslässt?
Selbst 2 Sekunden könnten mal nicht ausreichen.

Sonst heisst es bald:
Lokal geht alles...

Besser:
function warteschleife()
{ if ((parent.variabl) && (parent.display)) abdiepost();
else window.setTimeout('warteschleife()',1000);
}

Noch besser: die zu verwendenden Variablen abfragen

BlueJay
05-05-2005, 08:01
window.setTimeout("", 1000);


den Satz kannste getrost streichen :)

GU4RDI4N
05-05-2005, 11:22
aber wie soll abdiepost() die funktion getvar() dazu bringen das ergebniss zurückzugeben?

BlueJay
05-05-2005, 12:20
aber wie soll abdiepost() die funktion getvar() dazu bringen das ergebniss zurückzugeben?

Was willst du überhaupt mit dem Ding? getvar wird nirgendwo aufgerufen.

abdiepost ist nur dazu da, grünes Licht zum Senden und Empfangen zu geben, z.B. die globale Variable alles_brereit auf true oder false zu setzen.

Dann heisst es z.B.:


if (alles_bereit) wattweissich=getvar(bla,bla,bla);
else
{
wattweissich="pipapo, noch nix do!";
alert(wattweissich);
}

GU4RDI4N
05-05-2005, 12:56
die funktion soll eine variable aus der mysql datenbank vom server holen,
indem er die gesuchte variable in ein formular schreibt und das an den server sendet.
der server sucht dann aus der datenbank die gesuchte variable raus und sendet 'rein = "gesuchte daten";' an das frame "parent.variabl", das nie zuendegeladen wird, weil es ständig überprüft ob der client eine neue anfrage gestellt hat, um auf dem client die variable "rein" mit den neuen daten zu aktualiesieren.
sobald die variable aktualiesiert wurde, sucht getvar sich die variable raus und gibt sie wieder.

GU4RDI4N
09-05-2005, 19:51
wisst ihr auch nicht weiter?

GU4RDI4N
10-05-2005, 18:18
konnte den fehler eben beheben.

aber nun ist ein neuer fehler da:
er reagiert nicht auf folgendes:


function melden(e)
{
var keyCode = (e) ? e.which :event.keyCode;
alert(keycode);
if(keyCode=="100")
{links=parent.display.document.getElementById("player01").style.left;
if(links<=0){links=1}
setvar("'.$usn.'","posA","user",links-10);}

if(keyCode=="97")
{links=parent.display.document.getElementById("player01").style.left;
if(links<=0){links=1}
setvar("'.$usn.'","posA","user",links+10);}

if(keyCode=="119")
{hoch=parent.display.document.getElementById("player01").style.top;
if(hoch<=0){hoch=1}
setvar("'.$usn.'","posB","user",hoch+10);}

if(keyCode=="115")
{hoch=parent.display.document.getElementById("player01").style.top;
if(hoch<=0){hoch=1}
setvar("'.$usn.'","posB","user",hoch-10);}
}
document.onKeydown=melden;

ich drück ne taste und nichts passiert.

könnt ihr mir helfen?

GU4RDI4N
11-05-2005, 21:19
kann mir mal einer sagen wie bei:


<form name="vari" method="post" onload="javascript:alert(document.forms[0])">
<input type="hidden" name="url" value="game">
<input type="hidden" name="ma" value="1">
... //noch mehr inputs
</form>


eine meldung mit dem inhalt "undefined" kommt???
mozilla kaput?

BlueJay
12-05-2005, 22:19
kann mir mal einer sagen wie bei:


<form name="vari" method="post" onload="javascript:alert(document.forms[0])">
</form>


eine meldung mit dem inhalt "undefined" kommt???
mozilla kaput?

Ich weiss nicht, was andere Browser dazu sagen, aber laut HTML4 kennen die Forms kein onload, nur sowas wie hier aufgeführt:
http://www.w3.org/TR/REC-html40/interact/forms.html#edef-FORM

So z.B. ignorieren alle meine Browser (Firefox, Konqueror) dieses onload.

BlueJay
12-05-2005, 22:22
ich drück ne taste und nichts passiert.
könnt ihr mir helfen?

Entwickle doch mal mit Mozilla, der wirft bestimmt sie passende Fehlermeldung raus.

GU4RDI4N
13-05-2005, 16:55
ich arbeite schon immer mit mozilla.

fehlermeldungen gibts keine,
auch nicht in der javascript-konsole.
die einzige meldung die kommt ist die von dem alert,
und zwar "undefined".

BlueJay
14-05-2005, 11:26
ich arbeite schon immer mit mozilla.
fehlermeldungen gibts keine,
auch nicht in der javascript-konsole.
die einzige meldung die kommt ist die von dem alert,
und zwar "undefined".

Du beziehst dich jetzt auf das onload im Formular? Da dürfte die Reaktion an sich undefiniert sein, und jede Browserversion treibt da die eigenen Späßchen, s.vorige url: W3C HTML4.

Pack das alert doch mal in einen script-Block hinter das schließende Form-Tag, zumindest im Firefox kommt da was (wenn definiert :) ).

GU4RDI4N
14-05-2005, 11:55
so in etwa?


<form name="vari" method="post" onload="javascript:gimme_form_name()">
</form>
<script type="text/javascript">
<form name="vari" method="post" onload="javascript:gimme_form_name()">
</form>
<script type="text/javascript">

if(document.form!=undefined)
{
alert(document.form.name);
}
else
{
alert(document.form);
}
</script>


jetzt kommt diese fehlermeldung:


Fehler: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMWindowInternal.alert]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost/sonstiges/tests/test.html :: <TOP_LEVEL> :: line 5" data: no]

die sagt mit ganix, hat das überhaupt was mit dem code zu tun? oder liegt das am mozilla?

BlueJay
17-05-2005, 20:25
nee, ich meinte das so:



<form name="vari" method="post">
<input type="hidden" name="url" value="game">
<input type="hidden" name="ma" value="1">
... //noch mehr inputs
</form>

<script type="text/javascript">alert(document.forms[0]);</script>


oder pack das onload dahin, wo es hingehort: ins <body>