Fabian: getElmentById()

Hallo:
Ich habe ein Problem und zwar möchte ich mehrere "Eingabefelder" in einer Schleife ansprechen, sodass ich weniger schreiben muss.
Ich denke mal das geht auch doch wie?and heraus es geht über document.eingabe.getElmentById() , doch es funktioniert trotzdem nicht.

Mein gekürtzter Code:

  
var textboxen = new Array(anzahl + 1);  
for (i = 1; i <= anzahl; i++) {  
					textboxen[i] = parseFloat('document.eingabe.t' + i + '.value')  
				}  
  
  
...  
  
  
for (i = 1; i <= anzahl; i++) {  
						document.eingabe.getElmentById("t"+i).value = textboxen[i]  
					}  

<table border="0" >  
				<form name="eingabe">  
					<tr>  
						<td><input name="t1" type="text" size="20" maxlength="20"></td>  
						<td><input name="t6" type="text" size="20" maxlength="20"></td>  
						<td><input name="t11" type="text" size="20" maxlength="20"></td>  
					</tr>  
					<tr>  
						<td><input name="t2" type="text" size="20" maxlength="20"></td>  
						<td><input name="t7" type="text" size="20" maxlength="20"></td>  
						<td><input name="t12" type="text" size="20" maxlength="20"></td>  
					</tr>  
					<tr>  
						<td><input name="t3" type="text" size="20" maxlength="20"></td>  
						<td><input name="t8" type="text" size="20" maxlength="20"></td>  
						<td><input name="t13" type="text" size="20" maxlength="20"></td>  
					</tr>  
					<tr>  
						<td><input name="t4" type="text" size="20" maxlength="20"></td>  
						<td><input name="t9" type="text" size="20" maxlength="20"></td>  
						<td><input name="t14" type="text" size="20" maxlength="20"></td>  
					</tr>  
					<tr>  
						<td><input name="t5" type="text" size="20" maxlength="20"></td>  
						<td><input name="t10" type="text" size="20" maxlength="20"></td>  
						<td><input name="t15" type="text" size="20" maxlength="20"></td>  
					</tr>  
					<tr>  
						<td></td>  
						<td><center><input type=button value="LOS!" onClick="aufstocken()"></center></td>  
						<td></td>  
					</tr>  
					  
				</form>  
			</table>
  1. Hi,

    Ich habe ein Problem und zwar möchte ich mehrere "Eingabefelder" in einer Schleife ansprechen, sodass ich weniger schreiben muss.

    guter Gedanke. :-)

    Ich denke mal das geht auch doch wie?and heraus es geht über document.eingabe.getElmentById() , doch es funktioniert trotzdem nicht.

    Tja, wenn man "Element" richtig schreibt, dann schon ...

    <table border="0" >

      		<form name="eingabe">
    
      
    Falsch: Schachtelungsfehler. Ein form-Element kann kein direktes Kind von table sein. Das Formular muss in dem Fall die Tabelle komplett umschließen.  
      
    Davon abgesehen: Ich würde hier nicht sämtliche input-Elemente mit IDs versehen, sondern sie mit getElementsByTagName() als Nachfahren von form ansprechen.  
      
    So long,  
     Martin  
    
    -- 
    Ich liebe Politiker auf Wahlplakaten.  
    Sie sind tragbar, geräuschlos, und leicht wieder zu entfernen.  
      (Loriot, deutscher Humorist, †2011)  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
    1. Davon abgesehen: Ich würde hier nicht sämtliche input-Elemente mit IDs versehen, sondern sie mit getElementsByTagName() als Nachfahren von form ansprechen.

      So long,
      Martin

      Ich hab jetzt geschrieben:

      for (i = 1; i <= anzahl; i++) {  
      						document.getElementsByName("t" + i).value = textboxen[i]  
      				}
      

      Es funktioniert. Danke!

      1. Hi,

        for (i = 1; i <= anzahl; i++) {

          				document.getElementsByName("t" + i).value = textboxen[i]  
          		}
        
          
        Das ist syntaktisch richtiger Code. Allerdings liefert getElementsByName eine NodeList und kein einzelnes Element. Du setzt daher nicht den Wert der Elemente mit den Namen t1, t2 uswusf, sondern die Eigenschaft value der NodeList.  
          
        Bist du sicher, dass der Code das bewirkt, was du willst?  
          
        Bis die Tage,  
        Matti
        
        -- 
        [Webapplikationen in C++ entwickeln](http://tntnet.org/)
        
    2. [latex]Mae  govannen![/latex]

      Davon abgesehen: Ich würde hier nicht sämtliche input-Elemente mit IDs versehen, sondern sie mit getElementsByTagName() als Nachfahren von form ansprechen.

      Ich nicht. Alle Formulare-Elemente als Kinder des Formulars werden bereits via
      document.forms['formularname'].elements Beschreibung
      bereitgestellt, da muß man nichts mehr mit getElement(s)By... ermitteln.

      Stur lächeln und winken, Männer!
      Kai

      --
      It all began when I went on a tour, hoping to find some furniture
       Followed a sign saying "Beautiful Chest", led to a lady who showed me her best)
      SelfHTML-Forum-Stylesheet
      1. Hallo,

        Ich würde hier nicht sämtliche input-Elemente mit IDs versehen, sondern sie mit getElementsByTagName() als Nachfahren von form ansprechen.
        Ich nicht. Alle Formulare-Elemente als Kinder des Formulars werden bereits via
        document.forms['formularname'].elements Beschreibung
        bereitgestellt, da muß man nichts mehr mit getElement(s)By... ermitteln.

        klar, so macht man das auch anständigerweise. Warum erzähl ich denn dann so'n Stuss?

        Ciao,
         Martin

        --
        Du kannst dem Leben nicht mehr Tage geben.
        Aber dem Tag mehr Leben.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hi,

    var textboxen = new Array(anzahl + 1);

    Warum denkst du dass das sinnvoll/notwendig/gut ist?
    Was spricht dagegen, textboxen ein leeres Array zuzuweisen?

    var textboxen = [];

    for (i = 1; i <= anzahl; i++) {

    Der Index von Arrays ist in Javascript 0-Basiert.
    Sprich, das erste Elemente ist textboxen[0], nicht textboxen[1].
    Außerdem sollte man keine "unge-var-ten" Variablen verwenden.

    Richtig wäre also:

    for (var i = 0; i < anzahl; i++) {

    textboxen[i] = parseFloat('document.eingabe.t' + i + '.value')

    Hast du dir schon einmal anzeigen lassen was der parseFloat-Aufruf zurückgibt?
    Wirkt ziemlich sinnlos.

    document.eingabe.getElmentById("t"+i).value = textboxen[i]

    Zumindest in dem von dir gezeigtem HTML befindet sich kein einziges Element mit einer ID.
    Außerdem meintest du wahrscheinlich getElementById, nicht getElmentById.

    Jeder der gängigen Browser hat eine Javascript-Konsole irgendwo in seinen Entwickler-Tools versteckt (F12).
    Mit dieser kannst du normalerweise auch dein Javascript Debuggen.
    Ansonsten solltest du anfangen Test-Alerts o.ä. hinzuzufügen falls sich dein Code an einer Stelle anders verhält als du erwartet hast.

    ~dave