Lily: Wert i von for schleife einfügen

Hi,
ich habe folgende for Schleife:

  
for (var i=1; i <= 3; i++) {  
document.artikel_schreiben.bild+i.value = document.getElementById('vorschau'+i).src;  
}  

Leider habe ich die Variable i wohl falsch eingebunden, denn es funktioniert nicht.

Könnt ihr mir sagen was ich falsch gemacht habe?

Danke :)

  1. Hi

    document.artikel_schreiben.bild+i.value =

    ~~~~~~

    Das Funktioniert so nicht, du kannst in dieser schreibweise den Namen des Objektes nicht so zusammensetzen. Um mit dynamischen Objektnamen zu arbeiten kannst du z.b. die Funktionen getElementByName() oder getElementById() verwenden:

    document.getElementByName("bild"+i)

    gruss

    lightfly

    1. Hi,

      document.getElementByName("bild"+i)

      Kleine Verbesserung:
      die Funktion heißt getElementsByName()

      mfG,
      steckl

      1. Danke für die vielen Antworten.

        Nun habe ich es Testweise einmal so geändert:

          
        <input type="hidden" name="bild1" value="" />  
        <input type="hidden" name="bild2" value="" />  
        <input type="hidden" name="bild3" value="" />  
        
        
          
        <script type="text/javascript">  
        for (var i=1; i <= 3; i++) {  document.getElementsByName("bild"+i).value = "asdf";  
        }  
        </script>  
        
        

        Leider funktioniert es immer noch nicht. Wenn ich es jedoch so versuche geht es:

          
        <input type="hidden" name="bild1" value="" />  
        <input type="hidden" name="bild2" value="" />  
        <input type="hidden" name="bild3" value="" />  
        
        
          
        <script type="text/javascript">  
        document.artikel_schreiben.bild1.value = "asdf";  
        document.artikel_schreiben.bild2.value = "asdf";  
        document.artikel_schreiben.bild3.value = "asdf";  
        </script>  
        
        

        In den value Werten von bild1,bild2 und bild3 steht dann asdf.

        Allerdings finde ich, das letztere Lösung nicht optimal ist.
        Hat jemand noch eine Idee warum der Code mit der for Schleife nicht funktioniert?

        1. Hi,

          document.getElementsByName("bild"+i).value = "asdf";

          getElementsByName() ist ein Array, da ja ein Name mehrmals in einem HTML-Dokument vorkommen kann. Mit eckigen klammern kannst du dann angeben, welches Element des Arrays du ansprechen willst. Siehe Beschreibung zu getElementsByName.

          Wenn es nur ein Element mit dem Namen (hier "bild"+i) gibt oder du das erste mit dem Namen ansprechen willst musst du in deinem Fall folgendes schreiben:
          document.getElementsByName("bild"+i)[0].value = "asdf";

          mfG,
          steckl

          1. WOW DANKE! Jetzt geht es :)

            1. WOW DANKE! Jetzt geht es :)

              es geht aber auch einfacher

              Struppi.

    2. document.artikel_schreiben.bild+i.value =
                                    ~~~~~~

      Das Funktioniert so nicht, du kannst in dieser schreibweise den Namen des Objektes nicht so zusammensetzen.

      so nicht, aber in selfhtml steht wie es doch geht http://de.selfhtml.org/javascript/objekte/elements.htm#allgemeines, das "Schema 4" ist hier die Wahl.

      document.artikel_schreiben['bild + i].value =..

      Struppi.

  2. Hello out there!

    document.artikel_schreiben.bild+i.value = document.getElementById('vorschau'+i).src;

    Dass du das 'i' als String an etwas anhängen willst, ist dir bei 'vorschau' bewusst. Warum nicht bei 'bild'?

    document.artikel_schreiben.bild ist weder eine Zahl noch ein String; der '+'-Operator macht so keinen Sinn.

    Möchtest du vielleicht sowas:
    document.artikel_schreiben['bild'+i].value = document.getElementById('vorschau'+i).src;

    Könnt ihr mir sagen was ich falsch gemacht habe?

    Die Fehlerkonsole des Firefox konnte das nicht?

    See ya up the road,
    Gunnar

    --
    „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)