2013-05-24 4 views
5

У меня есть форма, которая фактически является таблицей текстовых полей. HTML выглядит следующим образом:Получить значения из таблицы текстовых полей 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> 

Я хотел бы перебирать все поля и получить значения при нажатии кнопки, но я получаю неопределенный вернулся в логе консоли. Я не хочу использовать идентификаторы для каждого поля, так как хочу выполнять некоторые операции с колонками (добавлять, умножать). Мой сценарий для первого столбца выглядит так:

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

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

Любые советы? Благодаря

+0

Почему не перебирать элементы формы и забыть стол полностью? –

+0

Привет, потому что мне нужно выполнить некоторые линейные операции (по столбцу). Спасибо – user2135738

ответ

12

Вы должны выбрать вход из ячейки:

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

Если бы вы могли иметь братьев и сестер (даже пробелов) вокруг входов, то вы можете использовать .children коллекцию целевых правильный элемент.

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

+0

Большое спасибо за быстрый ответ! – user2135738

0

Вы можете изменить свой цикл, чтобы:

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

Это становится все td элементы, петли их, и проверяет значение firstChild

Смежные вопросы