我有一个表单,实际上是一个文本字段表。 html看起来像这样:
<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>
我想迭代所有字段并按下按钮获取值,但是我在控制台日志中返回了未定义的内容。我不想为每个字段使用ID,因为我想做一些列操作(添加,乘法)。我的第一列的脚本如下所示:
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 :(得分:12)
您需要从单元格中选择输入:
// ------------------------------------v
console.log(table.rows[i].cells[0].firstChild.value);
如果你可以在输入周围有兄弟姐妹(甚至空白),那么你可以使用.children
集合来定位正确的元素。
// ------------------------------------v
console.log(table.rows[i].cells[0].children[0].value);
答案 1 :(得分:0)
您可以将循环更改为:
var table=document.getElementsByTagName("td");
for(var i=1; i<table.length;i++){
console.log(table[i].firstChild.value);
}
这将获取所有td
元素,循环它们,并检查firstChild
值