我有一张桌子。大多数列只包含文本,但其中两列包含“选择”框。
我试图在表格中循环并提取所选选项的值。
我已经能够访问选择框,但是当我尝试在selectedIndex上获取选项的值时,我遇到了这个问题。 selectedIndex总是以'undefined'形式出现。
下面是一些代码:
var table = document.getElementById("inTable");
for (var i = 0, row; row = table.rows[i]; i++) {
//iterate through rows
//rows would be accessed using the "row" variable assigned in the for loop
for (var j = 0, col; col = row.cells[j]; j++) {
//iterate through columns
//columns would be accessed using the "col" variable assigned in the for loop
if (col.nodeName === 'TD') {
// select box
if (j === 4) {
var htmlString = col.innerHTML;
var parser = new DOMParser();
var doc = parser.parseFromString(htmlString, "text/html");
var e = doc.getElementById('sel');
console.log(e.selectedIndex); // -> undefined
}
}
}
}
使用console.log(e.options[e.selectedIndex].value);
我确实得到了一些值,但它们并不对应于所选的实际值,首先我得到0,这实际上对应于选择框中的第一个值,但后来我将选择的第一个值切换为9,console.log(e.options[e.selectedIndex].value);
我很困惑,可能以错误的方式解决了这个问题!有人可以让我直截了当吗?
答案 0 :(得分:0)
我无法理解为什么你骑自行车穿过你的桌子。
如果您使用ID来识别您的选择标记,则可以使用document.getElementById('your-id');
答案 1 :(得分:0)
您不需要使用DOMParser来查询所选的索引,实际上您可以为您的选择分配一个类,并使用document.getElementsByClassName('yourclass')查询它们,然后为每个他们只是阅读selectedIndex。
var selects = document.getElementByClassName('classname');
for(var i = 0, len = selects.length; i < len; i++){
console.log(selects[i].selectedIndex);
}
对于每个元素,id属性也应该是唯一的,似乎所有选择都具有相同的id“sel”。