我在使用Javascript更改div元素的类时遇到了一些麻烦。我目前使用的方法(参见下面的代码)适用于Chrome和Firefox,但不适用于IE8(我没有测试IE9,但假设它已经可以使用或者只需要ie8一次)。
奇怪的是,在ie8中,当我改变输入元素的类时,它起作用。但改变div的类什么都不做(类没有改变)
的JavaScript
function switchTab(tab, button) {
var divs = document.getElementsByName("tab-content");
var d;
for (counter=0; counter<divs.length; counter++) {
d = divs[counter];
if (d.id == tab)
d.className = "members";
else
d.className = "members-hidden";
}
var buttons = document.getElementsByName("button");
var bu;
for (counter=0; counter<buttons.length; counter++) {
bu = buttons[counter];
if (bu.id == button)
bu.className = "tab-active";
else
bu.className = "tab";
}
return false;
}
相关HTML代码段
<div id="nav">
<ul class="membernav">
<li><input id="ob" type="button" class="tab-active" name="button" onclick="return switchTab('officers', 'ob')" value="Officers"></li>
<li><input id="pb" type="button" class="tab" name="button" onclick="return switchTab('partners', 'pb')" value="Partners"></li>
<li><input id="mb" type="button" class="tab" name="button" onclick="return switchTab('managers', 'mb')" value="Managers"></li>
<li><input id="ab" type="button" class="tab" name="button" onclick="return switchTab('associates', 'ab')" value="Associates"></li>
</ul>
</div>
并在HTML中进一步下载
<div id="tab-contents">
<div class="members" name="tab-content" id="officers">
<!-- irrelevant content removed to save space -->
</div>
<div class="members-hidden" name="tab-content" id="partners">
<!-- irrelevant content removed to save space -->
</div>
<div class="members-hidden" name="tab-content" id="managers">
<!-- irrelevant content removed to save space -->
</div>
<div class="members-hidden" name="tab-content" id="associates">
<!-- irrelevant content removed to save space -->
</div>
</div>
按钮上的类已成功切换到选项卡和选项卡活动。
但div没有从成员更改为成员隐藏。
我犯了一些愚蠢的错误吗?因为我以同样的方式改变,为什么一个工作而另一个工作?
答案 0 :(得分:3)
这篇文章回答了你的问题:getElementsByName in IE7
总结一下:IE不支持默认情况下按名称获取不支持name属性的元素。这就是为什么您的标准表单输入字段可以工作,但div不会。