JavaScript文档元素集合的麻烦

Bob*_*per 1 javascript regex for-loop getelementsbytagname

我不确定我是不是完全错了,或者只是错过了一点点.我有一个页面,包含部分,子部分和子部分.后者是所有共享格式的元素:

<select id="SubSubFlood"  class='hidden'>
    <option></option>
</select>
<select id="SubSubHome"  class='hidden'>
    <option></option>
</select>
Run Code Online (Sandbox Code Playgroud)

我不能明确地为每一个命名,因为它们是动态生成的,但它们都以"SubSub"开头.我正在尝试创建将所有SubSub更改为class ='hidden'的代码,然后将我想要显示的那个更改为class ='unhidden'.这是我的尝试:

function ShowSubSub(SelectID) {
    var SubSub = document.getElementsByTagName("Select");
    var item;
    for (item in SubSub) {
        if (item.ID.match(/SubSub.*/)) {            
            item.className = 'hidden';
        }
    }
    item = document.getElementById(SelectID);
    item.className = 'unhidden';
}
Run Code Online (Sandbox Code Playgroud)

我在哪里错过了船?如何让JavaScript更改ID为以"SubSub"开头的每个标签为class ="hidden"?

Geo*_*rge 5

SubSub将包含一个 object这样的数组,所以当你把它放在一个for each循环中时,你将枚举它的属性,而不是元素本身.因此循环中的项目将不是第一个选择,它将是0.我建议将其更改为正常for循环

function ShowSubSub(SelectID) {
  var SubSub = document.getElementsByTagName("Select");
  var item;
  for (var i =0; i < SubSub.length; i++) {
    if (SubSub[i].id.match(/SubSub.*/)) {
      SubSub[i].className = 'hidden';
    }
  }
  item = document.getElementById(SelectID);
  item.className = 'unhidden';
}

ShowSubSub('SubSubHome')
Run Code Online (Sandbox Code Playgroud)
.hidden{

display:none;
}
Run Code Online (Sandbox Code Playgroud)
<select id="SubSubFlood" class='hidden'>
  <option>Flood</option>
</select>
<select id="SubSubHome" class='hidden'>
  <option>Home</option>
</select>
Run Code Online (Sandbox Code Playgroud)

PS有没有理由unhidden上课,你不能只是删除hidden课程吗?