Was ist falsch? (Anfängerfrage)
Floppy
- javascript
0 David Tibbe0 plan_B0 Steel
Hallo, ich bin nicht wirklich gut in javascript, dies ist meine erste sache die ich in js schreibe, und würde gern wissen was falsch ist.
es soll das formular aller 10 sekunden in dem iframe abschicken, mit der schiffs-id die in einem cookie gespeichert werden soll.
[code=html]
<html>
<head>
<script language="javascript">
function buildjs() {
SetCookie('ship',prompt('ID des zu bauenden Schiffs',''))
var $ship = GetCookie(ship)
document.buildform.ship.name = "fmenge[" + $ship + "]"
document.buildform.submit();
window.setTimeout("reload()", 10000);
}
</script>
</head>
<body onload="javascript:buildjs()">
<form action="********" method="post" name="buildform">
<input name="ship" type="hidden" value="999999">
</form>
<iframe name="background" src="******" width="0px" height="0px" frameborder="0" border="0px">
</body>
</html>
[/code]
HalloFloppy,
es soll das formular aller 10 sekunden in dem iframe abschicken, mit der schiffs-id die in einem cookie gespeichert werden soll.
Und was funktioniert daran nicht? Was sagt deine JS-Konsole? Was hast du schon erdebuggt?
<script language="javascript">
Das type-Attribut fehlt.
var $ship = GetCookie(ship)
Variablen brauchen kein $, wir sind nicht in PHP :)
Vergiss auch nicht die ; am Ende jeder Anweisung.
window.setTimeout("reload()", 10000);
Wo ist reload() definiert? Oder meinst du reload() des location-Objekts?
<body onload="javascript:buildjs()">
In JS-Eventhandlern brauchst du kein javascript.
Grüße
David
Hallo David,
Vergiss auch nicht die ; am Ende jeder Anweisung.
Die können meines Wissens auch weggelassen werden (sofern man konsequent Zeilenumbrüche macht). Besser ist es aber, man schreibt sie hin. Ist sauberer und man kommt nicht mit C, PHP usw durcheinander.
Jonathan
Hi,
Ist sauberer und man kommt nicht mit C, PHP usw durcheinander.
aber mit VB... Jedesmal! :(
Bin trotzdem Befuerworter von ordentlich abgeschlossenen Zeilen mit dem Semikolon.
Hallo,
noch ein paar Anmerkungen:
> <script language="javascript">
<script type="javascript">
> function buildjs() {
> SetCookie('ship',prompt('ID des zu bauenden Schiffs',''))
> var $ship = GetCookie(ship)
Variablennamen beginnen mit einem Buchstaben.
<http://de.selfhtml.org/javascript/sprache/regeln.htm#namen >
sind SetCookie() und GetCookie() als Funktionen definiert?
document.buildform.ship.name = "fmenge[" + $ship + "]"
man kann nicht so einfach den Namen eines Inputfelds ändern. Der IE wird sich auf jeden Fall weigern
<iframe name="background" src="******" width="0px" height="0px" frameborder="0" border="0px">
</iframe> fehlt
in HTML haben die Attribute keine px-Dimension
Gruß plan_B
Hallo Floppy,
Alles was die andern so geschrieben haben ist korrekt und sollte verbessert werden. Trotzdem hat dir da wohl keiner so richtig weitergeholfen, was?
Ich gehe davon aus, die hast dich schon mit HTML beschaeftigt und auch SELFHTML schon zu Rate gezogen. Deshalb wundert es mich ein wenig, aber hier nochmal die Antworten zu Deiner Frage: (wie ich sie verstehe)
Du sagst, Du moechtest das Formular in den Frame schicken. Also submitten, wenn ich dich richtig versteh und die empfangende Datei soll im iframe erscheinen?
Dazu macht es Sinn deinem Formular erstmal mitzuteilen 'wohin es abschicken' soll. http://de.selfhtml.org/html/formulare/definieren.htm
Dann machst was komisches mit reload(). Du willst aber ja gar nicht reloaden, so wie du das beschreibst. (Mal von dem Fehlerhaften Aufruf, der kein gueltiges Objekt enthaelt, abgesehen)
Ich schaetze du suchst doch eher submit() fuer dein Formular:
http://de.selfhtml.org/javascript/objekte/forms.htm#submit
Zur richtigen Anwendung der Tipps, empfiehlt der Chefkoch wie immer die ausgiebige Lektuere des SELFHTML Publikation. Bei Bedarf auch als Download fuer die heimische Festplatte (Bei allen Festen empfehlenswert :D).
Ne Frage haett ich noch:
Was genau beabsichtigst Du mit
document.buildform.ship.name = "fmenge[" + $ship + "]"
?!
Viel Spass beim Kochen Deiner Seite.