WCG: JS wird nicht ausgeführt?

Hallo,

ich habe einigen HTML Code, auf den ich folgendes JavaScript anwenden möchte:

function Copy(i,j) {  
    document.forms["Form"].elements["Name[" + i + "]"].value = document.forms["Form"].elements["Name[" + j + "]"].value;  
    document.forms["Form"].elements["LP[" + i + "]"].value = document.forms["Form"].elements["LP[" + j + "]"].value;  
    document.forms["Form"].elements["AP[" + i + "]"].value = document.forms["Form"].elements["AP[" + j + "]"].value;  
    document.forms["Form"].elements["Chance[" + i + "]"].value = document.forms["Form"].elements["Chance[" + j + "]"].value;  
    document.forms["Form"].elements["Defend[" + i + "]"].value = document.forms["Form"].elements["Defend[" + j + "]"].value;  
    document.forms["Form"].elements["Armor[" + i + "]"].selectedIndex = document.forms["Form"].elements["Armor[" + j + "]"].selectedIndex;  
    document.forms["Form"].elements["Dmg[" + i + "]"].value = document.forms["Form"].elements["Dmg[" + j + "]"].value;  
  }

Ausschnitt aus dem HTML Code:

><td>4<input type='hidden' name='ID[3]' value='4'></td><td><input type='text' name='Name[3]' size='10' maxlength='10' value='Person_4'></td><td><input type='text' name='LP[3]' size='5' maxlength='5' value='12'></td><td><input type='text' name='AP[3]' size='5' maxlength='5' value='10'></td><td><input type='text' name='Dmg[3]' size='5' maxlength='5' value='1W6'></td>

Ganz oben in meiner Datei wird das ganze mit <script src="functions.js" type="text/javascript"></script> eingebunden. Wenn ich nun Copy(1,2) starte und alle Einträg mit der ID 2 auf die mit der ID 1 kopieren möchte, funktioniert das nicht. Kann mir da jemand helfen?

  1. Hallo,

    wo und wie rufst du die Function copy auf und welche Fehlermeldung geben die Fehlerkonsole bzw Firebug aus?

    Gruss

    Dieter

    1. Hallo,

      nun ich starte das ganze mit echo "<option onclick='Copy($i,$j)'>" . ($j+1) .  " übernehmen</option>";

      Ich habe kein Firefox, deswegen muss ich leider auf das Firebug für Chrome ausweichen. Und hier erscheint keine einzige Error-Message.

      WCG, sichtlich verwirrt

      1. Ich habe kein Firefox

        Das ließe sich per Internet ändern.
        In $i und $j steht auch wirklich das richtige drin?
        Funkioniert onclick bei einer <option> wirklich? Teste das mal mit einem alert.

        1. Das ließe sich per Internet ändern.
          In $i und $j steht auch wirklich das richtige drin?
          Funkioniert onclick bei einer <option> wirklich? Teste das mal mit einem

          Nein, tut mir leid, ich bin vor langem von Firefox auf Chrome umgestiegen und bin zu 99% begeistert. Das lässt sich auch nicht rückgängig machen. ;)

          Ja, in $i und $j stehen alle richtigen Werte drinnen, sonst würde ich im Rest des Skriptes Fehlermeldungen bekommen - daran liegt es nicht.

          Ich habe mal anstatt onclick='Copy($i,$j)' einfach onclick='alert($i)' geschrieben, was aber kein alert() zu Tage fördert. Ich denke hier liegt der Hund begraben - nur was mache ich falsch? :S

          1. Hi,

            Nein, tut mir leid, ich bin vor langem von Firefox auf Chrome umgestiegen und bin zu 99% begeistert. Das lässt sich auch nicht rückgängig machen. ;)

            Ein Firefox lässt sich zum Testen sehr wohl neben dem Browser, den du bevorzugt zum Surfen nutzt, installieren.

            Und bzgl. allgemeiner Fehlersuche ist Firefox (in Kombination mit Firebug) m.E. nach wie vor das beste, was du kriegen kannst.

            nur was mache ich falsch? :S

            Du weigerst dich, Firefox zum Testen zu benutzen.

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          2. Ja, in $i und $j stehen alle richtigen Werte drinnen, sonst würde ich im Rest des Skriptes Fehlermeldungen bekommen

            Eigentlich wärs hier ja eindeutiger wenn du gesagt hättest, ja ich hab in den Quellcode geschaut und da steht wirklich was sinnvolles drin ;-)

            Sowas solltest du erst mal direkt mit HTML testen, nicht gleich über PHP und eine Variable.

            1. Sowas solltest du erst mal direkt mit HTML testen, nicht gleich über PHP und eine Variable.

              Gesagt, getan.

              <html>
              <head>
              <title>Ein Testfile</title>
              <link rel="stylesheet" type="text/css" href="style.css">
              <script src="functions.js" type="text/javascript">alert("JAVASCRIPT AUSGABE");</script>
              </head>
              <body>

              <?php

              echo "PHP AUSGABE";

              ?>

              </body>
              </html>

              Den Code habe ich bei mir mal ausprobiert - einmal als .htm einmal als .html und einmal als .php File. In keinem Fall kommt bei mir die JS Ausgabe, nur bei dem .php File kommt die PHP Ausgabe.

              1. <script src="functions.js" type="text/javascript">alert("JAVASCRIPT AUSGABE");</script>

                Wenn du src und gleichzeitig einen Inhalt angibst, ist das etwas seltsam. Vielleicht wird der Inhalt da ja nicht mehr beachtet, wegen src.

                Du weißt aber schon was du da genau machst, wenn du sagst du probierst es als php aus und so? Dein eigentliches Problem hängt ja mit PHP nicht zusammen.
                Und dein Beispiel hängt auch nicht mit <option> zusammen?!
                Ich hab gemeint du machst in das onclick bei option den alert Befehl rein. Aber wie Kai345 schreibt funktioniert das nicht überall.

                1. Du weißt aber schon was du da genau machst, wenn du sagst du probierst es als php aus und so? Dein eigentliches Problem hängt ja mit PHP nicht zusammen.
                  Und dein Beispiel hängt auch nicht mit <option> zusammen?!
                  Ich hab gemeint du machst in das onclick bei option den alert Befehl rein. Aber wie Kai345 schreibt funktioniert das nicht überall.

                  Ich wusste bisher auch nicht, dass onclick nicht überall geht. Daher habe ich ja meinen Testcode oben SO aufgebaut:

                  <html>
                  <head>
                  <title>Ein Testfile</title>
                  <link rel="stylesheet" type="text/css" href="style.css">
                  <script src="functions.js" type="text/javascript">alert("JAVASCRIPT AUSGABE");</script>
                  </head>
                  <body>

                  <?php

                  echo "PHP AUSGABE";

                  ?>

                  </body>
                  </html>

                  Also steht der JS Code NICHT im Zusammenhang mit PHP, und auch wenn ich den PHP Teil weglasse, passiert nichts ...

                  1. Ich wusste bisher auch nicht, dass onclick nicht überall geht. Daher habe ich ja meinen Testcode oben SO aufgebaut:

                    Was ich meinte, in dem was du da schreibst ist halt kein <option onclick... drin, deswegen kannst du da auch nicht schnell mal ausprobieren ob es überhaupt geht.
                    Und das mit php war so gedacht, dass du dir zum ausprobieren am besten ein ganz simples Beispiel machen solltest, das möglichst nur den eigentlichen Testfall enthält. Mit php hast du schon wieder einen Server drum rum (im Vergleich zu einer html-Datei) und eine Fehlerquelle durch die Variablen usw.

                    Ich hätte da halt erst mal <option onclick="alert('test');"> probiert.
                    In Firefox funktionierts übrigens. Aber dass es nicht überall geht, hat ja schon jemand geschrieben.

                    und auch wenn ich den PHP Teil weglasse, passiert nichts ...

                    Klar, weil der Teil ja nix dazu beiträgt. Das ist genau das was ich dir sagen wollte ;-)

                2. Hi,

                  <script src="functions.js" type="text/javascript">alert("JAVASCRIPT AUSGABE");</script>
                  Wenn du src und gleichzeitig einen Inhalt angibst, ist das etwas seltsam. Vielleicht wird der Inhalt da ja nicht mehr beachtet, wegen src.

                  So ist es.

                  http://www.w3.org/TR/1999/REC-html401-19991224/interact/scripts.html#h-18.2.1:
                  „The script may be defined within the contents of the SCRIPT element or in an external file. If the src attribute is not set, user agents must interpret the contents of the element as the script. If the src has a URI value, user agents must ignore the element's contents and retrieve the script via the URI.“

                  Es gibt zwar ein paar obskure Workarounds dafür, aber zu empfehlen sind die eher nicht.

                  MfG ChrisB

                  --
                  “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          3. Hi,

            Nein, tut mir leid, ich bin vor langem von Firefox auf Chrome umgestiegen und bin zu 99% begeistert. Das lässt sich auch nicht rückgängig machen. ;)

            wenn Du Webseiten entwickelst, ist diese Information ungefähr so relevant wie Dein Lieblings-Essen. Installiere Dir je einen aktuellen Firefox, Opera und Safari, IE 6, IE 7 und IE 8.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hallo Cheatah,

              Installiere Dir je einen aktuellen Firefox, Opera und Safari, IE 6, IE 7 und IE 8.

              das Adjektiv "aktuell" in Verbindung mit "IE6" finde ich schon gewagt. :-)

              Gruß, Jürgen

              1. [latex]Mae  govannen![/latex]

                Installiere Dir je einen aktuellen Firefox, Opera und Safari, IE 6, IE 7 und IE 8.

                das Adjektiv "aktuell" in Verbindung mit "IE6" finde ich schon gewagt. :-)

                Schrieb er auch nicht. Durch das verwendete "und" wird die Aufzählung, für die der Bezug auf "aktuell" gilt, hinter Safari abgeschlossen; danach folgen noch weitere Browser, allerdings ohne Bezug auf "aktuell". MUSEN natürlich.

                Cü,

                Kai

                --
                Resig is more like Javascript's Pee Wee Herman.  ;) (D.Mark in clj)
                Foren-Stylesheet Site Selfzeug JS-Lookup
                SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
                1. Hi,

                  MUSEN natürlich.

                  die Muse küsste Dich an der richtigen Stelle, dieses Luder.

                  Cheatah

                  --
                  X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                  X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
      2. [latex]Mae  govannen![/latex]

        nun ich starte das ganze mit echo "<option onclick='Copy($i,$j)'>" . ($j+1) .  " übernehmen</option>";

        Ich weiß gerade nicht, ob dein chrome dieses Event überhaupt feuert, aber es gibt in jedem Fall Browser, die es nicht tun.
        Daher: onclick bei option-Elementen ist immer eine schlechte Idee.

        Benutze „onchange“ beim übergeordneten select-Element und ermittele den gewählten Eintrag per selectedIndex

        Cü,

        Kai

        --
        Resig is more like Javascript's Pee Wee Herman.  ;) (D.Mark in clj)
        Foren-Stylesheet Site Selfzeug JS-Lookup
        SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
      3. Hallo WCG

        WCG, sichtlich verwirrt

        Jo, sieht man ;-)

        Zwar gibt es schon ein paar Postings, die dir die richtige Richtung zeigen, aber ich fasse das nochmal zusammen, da diese offenbar nicht ganz bei Dir angekommen sind.

        1. Was immer du mit PHP machst, ist in diesem Zusammen hang voellig irrelavant, wichtig ist nur wie das generierte HTML und das Javascript aussehen. Das ist bei dir offenbar etwa so:

        <select ...>  
          <option onclick="copy(..)">...</option>  
          ...  
        </select>
        

        2. Onclick fuer options wird nicht von allen Browsern unterstuetzt, man muss auf select onchange zurueckgreifen. Das waere dann etwa so (sagen wir mal $i waere 2)

        <select onchange="copy(this.value)">  
          <option value="2">...</option>  
          ...  
        </select>
        

        this.value ist jetzt 2. Wenn i und j immer im gleichen Verhaeltnis zueinander stehen, kannst du deine Funktion so aendern, dass sie nur i als Argument nimmt, j waere dann zB. i+1. Sollte sich das Verhaeltnis von i und j jeweils aendern, muesstest du mal erklaeren, wie das sein soll, dann koennte man dir sicher auf die Spruenge helfen.

        3. Die meisten hier benutzen anscheinend Firefox mit Firebug zum Testen von Javascript, was auch sicher eine gute Wahl ist. Wie gut das mit Chrome geht, weiss ich nicht. Selbst wenn du Chrome als Browser benutzt, kannst du ohne Probleme Firefox daneben installieren, wenn auch vielleicht nur zum Testen.

        Gruss

        Dieter