selectedIndex不正确

时间:2015-12-05 22:58:14

标签: javascript dom select html-select

我有一张桌子。大多数列只包含文本,但其中两列包含“选择”框。

我试图在表格中循环并提取所选选项的值。

我已经能够访问选择框,但是当我尝试在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

我很困惑,可能以错误的方式解决了这个问题!有人可以让我直截了当吗?

2 个答案:

答案 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”。