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"?
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课程吗?