Steffan Herzgen: getElementById -> geht mit variablen nicht?

hallo,

habe folgendes problem.

var zahl = "5";
var id = "malen";
var id = malen+zahl;

// wenn ich das so schreibe gibt er mir den value aus
alert(document.getElementById("malen5").value);

// wenn ich das so schreibe gibt er mir
// den fehler "objekt erforderlich"
alert(document.getElementById(id_name).value);

  1. Hi,

    var zahl = "5";
    var id = "malen";
    var id = malen+zahl;

    was ist malen? Im Gegensatz zu "malen", meine ich.

    // wenn ich das so schreibe gibt er mir
    // den fehler "objekt erforderlich"

    Also, mir drängt sich auf, einfach mal id_name rauszu-alert()-en.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      var zahl = "5";
      var id = "malen";
      var id = malen+zahl;

      was ist malen? Im Gegensatz zu "malen", meine ich.

      // wenn ich das so schreibe gibt er mir
      // den fehler "objekt erforderlich"

      Also, mir drängt sich auf, einfach mal id_name rauszu-alert()-en.

      Cheatah

      das ist nur ein beispiel:

      normal läuft das alles in einer schleife um von mehreren textfeldern die values zu aendern.

      malen ist hier nur ein fiktiver name.

      was ich haben will ist das in der schleife immer der zähler von zahl ein hochspringt und dadurch meine namen zustande kommen

      malen1
      malen2
      malen3
      malen3

      um dann ueber die id die values aendern zu koennen. nur leider klappt das nicht . es klappt nur wenn ich das nicht mit variablen machen, sondern den namen mit "" reinschreibe. aber das will ich ja gerade nicht da ich sonst 40 textfelder so eintippen muss.

      1. Hi,

        das ist nur ein beispiel:

        [...]

        wenn Dein fehlerbehaftetes Beispiel per Copy & Paste in dieses Forum gelangt, kann man damit was arbeiten. Wenn Du uns hier aber Code lieferst, den Du nie ausgeführt hast, bringt das genau gar nichts. Gib uns also bitte *Deinen* Code, den Du auf ein Minimum reduziert hast, solange wie der Fehler reproduzierbar bleibt.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          das ist nur ein beispiel:
          [...]

          wenn Dein fehlerbehaftetes Beispiel per Copy & Paste in dieses Forum gelangt, kann man damit was arbeiten. Wenn Du uns hier aber Code lieferst, den Du nie ausgeführt hast, bringt das genau gar nichts. Gib uns also bitte *Deinen* Code, den Du auf ein Minimum reduziert hast, solange wie der Fehler reproduzierbar bleibt.

          Cheatah

          <script language="javascript">

          var alp = new Array();

          alp[0] = "1.54";
          alp[1] = "2.20";
          alp[2] = "3";
          alp[3] = "4";
          alp[4] = "5";
          alp[5] = "6";
          alp[6] = "7";
          alp[7] = "8";
          alp[8] = "9";
          alp[9] = "25";
          alp[10] = "5";
          alp[11] = "5";
          alp[12] = "5";
          alp[13] = "5";
          alp[14] = "5";
          alp[15] = "5";
          alp[16] = "5";
          alp[17] = "5";
          alp[18] = "5";
          alp[19] = "5";
          alp[20] = "5";
          alp[21] = "5";
          alp[22] = "5";
          alp[23] = "5";
          alp[24] = "5";

          var schiff_links_aussen = new Array();
          schiff_links_aussen[0] = "1.50";
          schiff_links_aussen[1] = "1.50";
          schiff_links_aussen[2] = "1.50";
          schiff_links_aussen[3] = "1.50";
          schiff_links_aussen[4] = "1.50";
          schiff_links_aussen[5] = "1.50";
          schiff_links_aussen[6] = "1.50";
          schiff_links_aussen[7] = "1.50";
          schiff_links_aussen[8] = "1.50";
          schiff_links_aussen[9] = "1.50";
          schiff_links_aussen[10] = "1.50";
          schiff_links_aussen[11] = "1.50";
          schiff_links_aussen[12] = "1.50";
          schiff_links_aussen[13] = "1.50";
          schiff_links_aussen[14] = "1.50";
          schiff_links_aussen[15] = "1.50";
          schiff_links_aussen[16] = "1.50";
          schiff_links_aussen[17] = "1.50";
          schiff_links_aussen[18] = "1.50";
          schiff_links_aussen[19] = "1.50";
          schiff_links_aussen[20] = "1.50";
          schiff_links_aussen[21] = "1.50";
          schiff_links_aussen[22] = "1.50";
          schiff_links_aussen[23] = "1.50";

          function init_geldbetraege()
          {
          var zaehler = 0;

          while ( zaehler != 3 )
          {
           var id = "alp";
           id = id+zaehler;

          //alert(id_name);
           alert(document.getElementById(id).value);

          //document.getElementById(id).value = alp[zaehler];

          zaehler++;
          }

          eine von den vielen html zeilen sieht so aus

          <input name="alp1" type="text" class="rahmen" id="alp1" size="5">

          hoffentlich hilft das. hier versuche ich mit dem alert den value auszugeben aber das will irgendwie nicht.

          }

          1. Hi Steffan

            ein paar Verbesserungsvorschläge ...

            alp = new Array();
            schiff_links_aussen = new Array();

            alp = ["1.54","2.20","3","4","5","6","7","8","9","25"];
            while (alp.length <= 25) {
              alp[alp.length] = "5";
            }

            while (schiff_links_aussen.length <= 24) {
              schiff_links_aussen[schiff_links_aussen.length] = "1.50";
            }

            function init_geldbetraege() {
                var zaehler = 0, kennung="";

            while ( zaehler <= 3 ) // ich würd' hier mit for arbeiten - egal
                {
                 kennung = "alp"; // "id" als Variablenname finde ich gewagt
                 kennung = kennung+zaehler;

            //alert(id_name);
                 alert(document.getElementById(kennung).value);

            //document.getElementById(kennung).value = alp[zaehler];

            zaehler++;
            }

            Gruß

            Gregor

            1. Hi Steffan

              ein paar Verbesserungsvorschläge ...

              alp = new Array();
              schiff_links_aussen = new Array();

              alp = ["1.54","2.20","3","4","5","6","7","8","9","25"];
              while (alp.length <= 25) {
                alp[alp.length] = "5";
              }

              while (schiff_links_aussen.length <= 24) {
                schiff_links_aussen[schiff_links_aussen.length] = "1.50";
              }

              function init_geldbetraege() {
                  var zaehler = 0, kennung="";

              while ( zaehler <= 3 ) // ich würd' hier mit for arbeiten - egal
                  {
                   kennung = "alp"; // "id" als Variablenname finde ich gewagt
                   kennung = kennung+zaehler;

              //alert(id_name);
                   alert(document.getElementById(kennung).value);

              //document.getElementById(kennung).value = alp[zaehler];

              zaehler++;
              }

              Gruß

              Gregor

              das geht immernoch nicht er sagt immernoch das ein objekt erforderlich ist. der will einfach die zusammengebastelte variable nicht annehmen. der will die variable kennung nicht annehmen

              <html>
              <head>
              <title></title>
              </head>

              <script text="JavaScript">

              alp = new Array();
              schiff_links_aussen = new Array();

              alp = ["1.54","2.20","3","4","5","6","7","8","9","25"];
              while (alp.length <= 25) {
                alp[alp.length] = "5";
              }

              while (schiff_links_aussen.length <= 24) {
                schiff_links_aussen[schiff_links_aussen.length] = "1.50";
              }

              function init_geldbetraege() {
                  var zaehler = 0, kennung="";

              while ( zaehler <= 3 ) // ich würd' hier mit for arbeiten - egal
                  {
                   kennung = "alp"; // "id" als Variablenname finde ich gewagt
                   kennung = kennung+zaehler;

              //--->     alert(document.getElementById(kennung).value);

              zaehler++;
                   }

              }

              </script>

              <body onload="init_geldbetraege()">

              <form action="" method="" target="">
              <input id="malen5" type="Text" name="" value="sdaf" size="" maxlength="">
              </form>

              </body>
              </html>

              1. Hi,

                das geht immernoch nicht er sagt immernoch das ein objekt erforderlich ist. der will einfach die zusammengebastelte variable nicht annehmen. der will die variable kennung nicht annehmen

                Schon mal mit
                kennung = eval(kennung+zaehler);
                probiert?

                Welchen Browser, Betriebssystem verwendest Du?
                Kannst Du alles mal online stellen und einen Link posten?

                Grüße,

                Ronny

  2. Hallo,

    // wenn ich das so schreibe gibt er mir den value aus

    wie heisst er denn?

    Mit freundlichen Grüßen,
    Andreas Waidelich

    --
    signatures eat bandwidth
    1. Hallo,

      // wenn ich das so schreibe gibt er mir den value aus
      wie heisst er denn?

      Mit freundlichen Grüßen,
      Andreas Waidelich

      der Iexplorer gibt mier dann diese fehlermeldung

  3. hallo,

    habe folgendes problem.

    var zahl = "5";
    var id = "malen";
    var id = malen+zahl;

    // wenn ich das so schreibe gibt er mir den value aus
    alert(document.getElementById("malen5").value);

    // wenn ich das so schreibe gibt er mir
    // den fehler "objekt erforderlich"
    alert(document.getElementById(id_name).value);

    das ist nur ein beispiel:

    normal läuft das alles in einer schleife um von mehreren textfeldern die values zu aendern.

    malen ist hier nur ein fiktiver name.

    was ich haben will ist das in der schleife immer der zähler von zahl ein hochspringt und dadurch meine namen zustande kommen

    malen1
    malen2
    malen3
    malen3

    um dann ueber die id die values aendern zu koennen. nur leider klappt das nicht . es klappt nur wenn ich das nicht mit variablen machen, sondern den namen mit "" reinschreibe. aber das will ich ja gerade nicht da ich sonst 40 textfelder so eintippen muss.

  4. Hi,

    das kann doch eigentlich nicht klappen, oder?

    var zahl = "5";
    var id = "malen";
    var id = malen+zahl;

    gibt doch keine Variable malen.

    alert(document.getElementById(id_name).value);

    und id_name gibt es auch nicht.

    Oder hab ich was falsch verstanden?

    Grüße,

    Ronny

    1. Hi,

      das kann doch eigentlich nicht klappen, oder?

      var zahl = "5";
      var id = "malen";
      var id = malen+zahl;

      gibt doch keine Variable malen.

      alert(document.getElementById(id_name).value);

      und id_name gibt es auch nicht.

      Oder hab ich was falsch verstanden?

      Grüße,

      Ronny

      var zahl = "5";
      var id = "malen";
      var id = id+zahl;

      alert(document.getElementById(id).value);

      sorry habe da wohl was durcheinander gebracht

      1. Hi,

        also so geht es bei mir:

        <html>
        <head>
        <title></title>
        </head>

        <script text="JavaScript">

        function ausgabe() {
        var zahl = "5";
        var text = "malen";
        var idname = text+zahl;

        alert(document.getElementById(idname).value);
        }
        </script>

        <body onload="ausgabe()">

        <form action="" method="" target="">
        <input id="malen5" type="Text" name="" value="sdaf" size="" maxlength="">
        </form>

        </body>
        </html>

        ! Achtung kein valides HTML.

        Grüße,

        Ronny