Floppy: Was ist falsch? (Anfängerfrage)

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]

  1. 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

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. 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

      1. 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.

  2. 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

    --
         *®*´¯`·.¸¸.·
  3. 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.