如何在JavaScript中获取所有表行的选定值?

时间:2017-03-29 13:27:42

标签: javascript html html-table cell

我有一个用动态生成的数据创建的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;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

select字段似乎是表格单元格的第二个子节点,因此由childNodes[1]访问。

第一个案例的演示:

&#13;
&#13;
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;
&#13;
&#13;

发生这种情况的原因是因为你在<td> <select>之间留下了空格。删除它们,可以使用childNodes[0]

访问它

&#13;
&#13;
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;
&#13;
&#13;

您还需要以循环结束,因此在行数上设置条件