2013-05-24 10 views
5

Ich habe ein Formular, das tatsächlich eine Tabelle der Textfelder ist. Die html sieht wie folgt aus:Werte von Tabelle der Textfelder erhalten Javascript

<form> 
    <table id="table"> 
      <tr> 
       <th>Player</th> 
       <th>Number</th> 
       <th>Con.per.day</th> 
       <th>P.100.kg</th> 
       <th>P.day</th> 
       <th>I.month</th> 
      </tr> 

      <tr> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td>Result</td> 
      </tr> 


      <tr> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td>Result</td> 
      </tr> 


      <tr> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td><input type="text" /></td> 
       <td>Result</td> 
      </tr> 

     </table> 
     <input type="button" name="rank" value="Rank" onClick="rankPlayers(this.form)"/> 
    </form> 

Ich möchte alle Felder zu durchlaufen und die Werte an der Knopfdruck, aber ich undefined bekommen in der Konsolenprotokoll zurückgegeben. Ich möchte nicht für jedes Feld IDs verwenden, da ich einige Spaltenoperationen ausführen möchte (addieren, multiplizieren). Mein Skript für die erste Spalte sieht so aus:

  function rankPlayers(){ 
      var table=document.getElementById("table"); 
      for(var i=1; i<table.rows.length;i++){ 

        console.log(table.rows[i].cells[0].value); 
      } 
     } 

Irgendwelche Tipps? Dank

+0

Warum nicht durch die Formelemente durchlaufen und vergessen der Tisch ganz? –

+0

Hallo, weil ich einige lineare Operationen (nach Spalte) machen muss. Danke – user2135738

Antwort

12

Sie müssen die Eingabe von der Zelle auszuwählen:

// ------------------------------------v 
console.log(table.rows[i].cells[0].firstChild.value); 

Wenn Sie Geschwister haben könnte (auch Leerzeichen) um die Eingänge, dann können Sie die .children Sammlung verwenden die Ziel richtiges Element.

// ------------------------------------v 
console.log(table.rows[i].cells[0].children[0].value); 

+0

Vielen Dank für die schnelle Antwort! – user2135738

0

Sie können Ihre Schleife ändern:

var table=document.getElementsByTagName("td"); 
    for(var i=1; i<table.length;i++){ 
     console.log(table[i].firstChild.value); 
    } 

Dieser erhält alle td Elemente, Schleifen sie und überprüft den firstChild Wert

Verwandte Themen