我有一个用动态生成的数据创建的HTML表,每行有不同的ID。每行包含3列,其中2列是文本输入字段,1列是选择字段。
我想要做的是获取每一行表格的所有内容,但我无法获得所选选项的价值。我使用for循环遍历每一行的每个列值。
我为前两个输入字段获取了正确的值,但是选择字段提供了未定义的值。
如何获取每个选择字段的选定选项值?
function getData(){
var table = document.getElementById("dataTable");
for (var i = 1, row; row = table.rows[i]; i++) {
var x = row.cells[0].childNodes[0].value;
var y = row.cells[1].childNodes[0].value;
var z = row.cells[2].childNodes[0].value; // select option field
}
}

<td><input value="first" id="first1" name="first[]" /></td>
<td><input value="second" id="second1" name="second[]" /></td>
<td>
<select name="third[]" id="third1">
<option value="option1">One</option>
<option value="option2">Two</option>
</select>
</td>
&#13;
答案 0 :(得分:1)
select字段似乎是表格单元格的第二个子节点,因此由childNodes[1]
访问。
第一个案例的演示:
function getData(){
var table = document.getElementById("dataTable");
var row;
for (var i = 0, row = table.rows[i]; i < table.rows.length ;i++) {
console.log('here')
var x = row.cells[0].childNodes[0].value;
var y = row.cells[1].childNodes[0].value;
var z = row.cells[2].childNodes[1].value; // select option field
console.log(x,y,z)
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="dataTable">
<tr>
<td><input value="first" id="first1" name="first[]" /></td>
<td><input value="second" id="second1" name="second[]" /></td>
<td>
<select name="third[]" id="third1">
<option value="option1">One</option>
<option value="option2">Two</option>
</select>
</td>
</tr>
</table>
<button onclick="getData()">Click</button>
&#13;
发生这种情况的原因是因为你在<td> <select>
之间留下了空格。删除它们,可以使用childNodes[0]
function getData(){
var table = document.getElementById("dataTable");
var row;
for (var i = 0, row = table.rows[i]; i < table.rows.length ;i++) {
var x = row.cells[0].childNodes[0].value;
var y = row.cells[1].childNodes[0].value;
var z = row.cells[2].childNodes[0].value; // select option field
}
}
&#13;
<table id="dataTable">
<tr>
<td><input value="first" id="first1" name="first[]" /></td>
<td><input value="second" id="second1" name="second[]" /></td>
<td><select name="third[]" id="third1">
<option value="option1">One</option>
<option value="option2">Two</option>
</select>
</td>
</tr>
</table>
<button onclick="getData()">Click</button>
&#13;
您还需要以循环结束,因此在行数上设置条件