我正在使用getElementsByTagName返回页面上的所有选择列表 - 是否可以根据选项值(即列表中的第一个或第二个项目)过滤这些列表?
原因是由于我不会进入这里的原因,有一个带有数字值的选择列表块(1,2,3,4,5等)和其他有文本值的列表(蓝色和黑色,红色)和黑色等)我只想要脚本我必须在具有数值的那些上运行。我不能为他们添加一个更容易让我这样做的类,但是我可以确定列表中的第一个选项值是“1”。
因此,有没有办法只在第一个选项值为“1”的页面上过滤返回的选择列表?
答案 0 :(得分: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;
}
答案 1 :(得分:1)
我设法通过在要执行的操作(在这种情况下,禁用选项)周围包含一个简单的IF语句来实现此功能,如下所示:
inputs = document.getElementsByTagName('select');
for (i = 0; i < inputs.length; i++) {
if (inputs[i].options[1].text == 1) {
// perform action required
}
}
毫无疑问,有一种更为灵巧或更经济的方式可以做到这一点,但主要的是它对我有用。