gary: Document / Formular streikt

Hi zusammen,

Ich habe hier ein kleines Paradoxon. Zwei identische Befehle, der obere streikt und der untere geht. Das verstehe wer wolle- ich nicht.
Zum Beispiel:

function chkFormular () {
     for (i = 0; i < document.Box00.D00.length; ++i)
    if (document.Box00.D00.options[i].selected == true)
    document.Formular.Vambox.value = (document.Box00.D00.options[i].value);
 document.Formular.Pos00.value = vorkomma00 + "," + nachkomma00 + " Euro";

for (i = 0; i < document.Box01.D01.length; ++i)
    if (document.Box01.D01.options[i].selected == true)
    document.Formular.Forest.value = (document.Box01.D01.options[i].value);
 document.Formular.Pos01.value = "vorkomma01 + "," + nachkomma01 + " Euro";

diese Routinen weisen einer hidden- Anweisung die dahinter stehenden Werte zu. Bei 11 von insgesammt 13 Routinen funktioniert es. Komischer weise ist es genau die Erste und die Letzte Anweisung, die weiter unten im Programm nichts verschickt.

Als Test habe ich an stelle des Variabelausdrucks "vorkomma00 + "," + nachkomma00 + " Euro";" den Text -"geht das ?"- eingesetzt.

Ergebnis: oben bei "Pos00" wird nichts verschickt unten klappt es tadellos.

Hilfe...

Gruss gary

  1. diese Routinen weisen einer hidden- Anweisung die dahinter stehenden Werte zu. Bei 11 von insgesammt 13 Routinen funktioniert es.

    du verwendest 13 (fast) identische Routinen? Wenn du sie in eine Funktion auslagerst und einfach 13mal mit verschiedenen Argumenten aufrufst sollte nicht nur dein Problem gelöst sein, sondern solltest du auch eine Menge Codezeilen gespart haben.

    Übrigens: gibt es irgendwelche Fehlermeldungen in der FireFox-JavaScript-Konsole?

    1. du verwendest 13 (fast) identische Routinen? Wenn du sie in eine Funktion auslagerst und einfach 13mal mit verschiedenen Argumenten aufrufst sollte nicht nur dein Problem gelöst sein, sondern solltest du auch eine Menge Codezeilen gespart haben.

      Um 13 Routinen in einer zu Programmieren reicht mein bescheidenes Javascriptwissen nicht aus. Codezeilen brauche ich nicht sparen, hab genug davon ;-)

      Übrigens: gibt es irgendwelche Fehlermeldungen in der FireFox-JavaScript-Konsole?

      Ja das mit der fehlerkonsole wollte ich schon immer mal fragen:

      Oft ist die rede von Fehlerkonsolen, Tracingprogramme ,die anscheinend fehler finden. Was ist das und wo ist das im Firefox?

      Grüsse gary

      1. Codezeilen brauche ich nicht sparen, hab genug davon ;-)

        genau das ist dein Problem

        Ja das mit der fehlerkonsole wollte ich schon immer mal fragen:

        Oft ist die rede von Fehlerkonsolen, Tracingprogramme ,die anscheinend fehler finden. Was ist das und wo ist das im Firefox?

        Menü Extras/JavaScript-Konsole

        1. Hi ratio,

          Mercifürdie info bezüglich Fehlerkonsole.

          genau das ist dein Problem

          Heisst dass, dass Programmzeilen in html/javascript begrenzt sind,und zu viele davon Fehler auslösen. Ich dachte das es keine Begrenzung (ausser Speicher) gibt.

          gruss gary

          1. Hi gary,

            Heisst dass, dass Programmzeilen in html/javascript begrenzt sind,und zu viele davon Fehler auslösen.

            Nein das heisst, dass zu viele davon unübersichtlich (d.h. fehleranfällig), verschwenderisch (Datenübertragung, Speicher), uneffektiv (=langsam) – kurz und gut: schlechter Programmierstil und einfach Sch... sind.

            Niemand hat Lust, sich mit solchem Spaghetti-Code herumzuschlagen.

            Es gibt allerdings spezielle Clubs und Wettbewerbe, wo man sich zum Ziel gemacht hat, Progamme im Quellcode möglichst so zu schreiben, dass ihnen niemand ansieht, was sie eigentlich machen (Stichwort Obfuscation). Meistens machen sie auch nicht viel (nur ein paar Wörter ausgeben oder so) und natürlich ist das keine ernsthafte Sache, nur ein Sport zur Belustigung für Programmier-Workoholics.

            Gruß, Don P

            1. Hi Don P

              Hab den Fehler endlich gefunden:

              document.Formular.Pos12.value

              Da stand Pos00, statt Pos 12 (denn schliesslich ist es die 12. Position)

              Das heist es hat mir den preis von Pos00 oben wieder gelöscht. Und wo nix ist, kann man auch nix übertragen.

              Gruss gary

              1. Hab den Fehler endlich gefunden:

                ich schrieb ja schon: bei einer Funktion wäre das nicht passiert. Dein Fehler ist ein typischer Kopierfehler, der durch Zusammenfassen gleichartiger Routinen zu einer Funktion statt x-maligem Kopieren und Anpassen hätte vermieden werden können.

  2. Hallo,

    http://de.wikipedia.org/wiki/Und_täglich_grüßt_das_Murmeltier

    lass' den Albtraum enden, und öffne nicht immer neue Threads ...

    SCNR

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
    1. SCNR

      Hi Plan B,

      Ich wersteh dich , wirklich ! Ich bin seit Tagen oder Wochen am Programmieren. Meine Frau denkt schon sie sei Witwe, meine Kinder denken Papa sei verreist, und mein ne PC's laufen heiss...

      Ich mach sogar kleine Fortschritte, also es geht ja vorwärts, so ist es nicht.

      But - I never, ever give up !!!

      Andere schaffen das auch, dann kann ich es auch schaffen. Da hängt schon zu viel Energie von mir drin. Desshalb vermute ich werd ich eure hilfe noch ein wenig in Anspruch nehmen. Die wo möchten dürfen gerne helfen. Die die es stört brauchen ja nicht zu antworten.

      Nur zu Beruhigung: Es ist nicht sinnlos was ihr sagt. Ganz bestimmt nicht. Ohne euch wär ich nie soweit gekomen.

      Dickes Dankeschön an alle Helfer

      gruss gary

  3. Zum Beispiel:

    um mal zu zeigen wie es ungefähr funktionieren könnte (ohne Beispiel HTML Code ist das nur bedingt möglich und ich jetzt auch keine Lust mir ein entsprechendes Beispiel zusammenzubasteln)

    Dein Formular sollte so aussehen:
    <form action="..." onsubmit="return chkFormular(this);">

    Das JS in etwa so:

    function chkFormular (form) {  
     var i = 0;  
     while( chkSelectBox(form, i++) ) {}  
      
    }  
    function chkSelectBox(form, nr) {  
     var nr = ('00' + nr).substr(-2);  
     var box = form['Box' + nr];  
     if(!box) return false;  
     for(var i = 0; i < box.length; i++) {  
      if (box.options[i].selected) form.Vambox.value = box.options[i].value;  
     }  
     form['Pos' +nr].value = vorkomma00 + "," + nachkomma00 + " Euro";  
     return true;  
    }
    

    Das Skript findet alle select-boxen mit dem Namen BoxXX wobei XX für eine zweistellige Nummer ist, die durchnumeriert sein muss (beiginnend bei 00)
    Da ich nicht weiß woher vorkomma00 und nachkomma00 kommen, kann ich nicht sagen wie du das machst.

    Aber!
    Warum machst du das?
    die Werte werden doch so oder so verschickt und diese auf dem Server zusammenzubasteln ist immer sinnvoller, als auch eine Technik zu setzen deren vorhandensein du nicht sicher weißt.

    Struppi.