0

我正在使用 getElementsByTagName 返回页面上的所有选择列表 - 是否可以根据选项值(即列表中的第一项或第二项)过滤这些选择列表?

原因是由于我不会进入这里的原因,有一个带有数字值(1、2、3、4、5 等)的选择列表块和其他带有文本值(蓝色和黑色、红色和黑色等)的选择列表) 并且我只希望我必须在具有数值的脚本上运行脚本。我无法为它们添加一个更容易让我这样做的类,但是我可以确定列表中的第一个选项值将是“1”。

因此,有没有办法仅通过第一个选项值为“1”的那些过滤页面上返回的选择列表?

4

2 回答 2

1

我设法通过在要执行的操作(在本例中为禁用选项)周围包装一个简单的 IF 语句来实现此功能,如下所示:

    inputs = document.getElementsByTagName('select');

    for (i = 0; i < inputs.length; i++) {
      if (inputs[i].options[1].text == 1) {
      // perform action required
      }
    }

毫无疑问,有一种更巧妙或更经济的方法可以做到这一点,但主要是它对我有用。

于 2012-08-07T00:30:59.017 回答
1

我很确定有更好的解决方案,但目前您可以尝试以下方法:

var allSelect = document.getElementsByTagName("select");

var result = filterBy(allSelect, 0/*0 == The first option*/, "1"/* 1 == the value of the first option*/);


function filterBy(allSelect, index, theValue) {
    var result = [];
    for (var i = 0; i < allSelect.length; i++) {
        if(allSelect[i].options[index].value == theValue ) {
            result.push(allSelect[i]);
        }    
    }
    return result;            
}
于 2012-08-06T16:23:10.773 回答