javascript - Onchange 事件解决多个下拉菜单问题

标签 javascript jquery

我有一个这样的列表:

<form>
<select id="List_22" >
  <option value="default">Default</option>
  <option value="1">Oil</option>
  <option value="2">Gas</option>  
  <option value="3">Power</option>
</select>
<form>

我想在下拉列表更改时启动一个功能,所以这工作正常:

document.getElementById("List_22").onchange = function() {...

但是,我有多个下拉菜单,它们都应该使用相同的功能。我尝试使用下面的通配符,但它不起作用

document.getElementById("[id^=L]").onchange = function() {

我做错了什么?我有点疯狂了。感谢大家抽出宝贵的时间。

最佳答案

问题是 document.getElementById 查找单个元素的精确 ID 匹配,因此它不支持属性选择器,也不返回多个元素。

在普通的旧 JavaScript 中,您可以使用支持 CSS 选择器和属性选择器的 document.querySelectorAll。请注意,IE8 之前不支持此功能。

var list = document.querySelectorAll('[id^=L]');
for(var i=0; i<list.length; i++){
    list[i].onchange = function(){
        // do something on change....
    };
}

或者因为你有 jQuery 标签,所以有一个 jQuery 版本:

$('[id^=L]').change(function(){
    // do something on change....
});

旁注:在这两种情况下,我都希望使属性选择器更具体,例如 select[id^=List_]

关于javascript - Onchange 事件解决多个下拉菜单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124324/

相关文章:

javascript - 使用 array.map() 从对象数组中查找元素

C# WebBrowser 组件忽略 window.location.href = url

javascript - 如果原始表单对于屏幕阅读器而言过于复杂,那么提供后备表单对于 WCAG 合规性是否有效?

javascript - 如何使用 es6 在 react-native 中初始化数组?

javascript - 禁用按钮,直到清除所有字段

javascript - vue 中的条件范围插槽模板

javascript - HTML jquery 可折叠表格

javascript - 如何使用 JQuery 根据存储在第一个 TD 中的表的值隐藏存储在第二个 TD 中的图像?

javascript - 使用 jQuery 显示/隐藏复选框

javascript - JavaScript 变量的背景颜色十六进制