【发布时间】:2015-07-23 16:36:16
【问题描述】:
我不明白为什么下面的 for 循环不起作用。
我创建了一个可以正常工作的函数,因此 HTML 不是问题。这是有效的功能:
function deactivateAllTabs() {
document.getElementById('tab-header-1').className = 'tab-header';
document.getElementById('tab-header-2').className = 'tab-header';
document.getElementById('tab-header-3').className = 'tab-header';
document.getElementById('tab-content-1').className = 'tab-content';
document.getElementById('tab-content-2').className = 'tab-content';
document.getElementById('tab-content-3').className = 'tab-content';
}
我认为我应该创建一个 for 循环来自动处理未来的其他选项卡,而不是硬编码选项卡标题和选项卡内容 ID。
如果我分别添加另一组:
document.getElementById('tab-header-4').className = 'tab-header';
document.getElementById('tab-content-4').className = 'tab-content';
一切正常。当我尝试下面的 for 循环时它失败了。知道我哪里出错了吗?
点击选项卡时出现的错误是:
未捕获的类型错误:无法将属性“className”设置为 null
function deactivateAllTabs() {
for (var i = 0; i < tabHeaders.length; i++) {
document.getElementById('tab-header-'+i).className = 'tab-header';
document.getElementById('tab-content-'+i).className = 'tab-content';
}
}
【问题讨论】:
-
您有 ID 为
tab-header-0和tab-content-0的元素吗? -
document.getElementById('tab-header-'+ (i+1)).className = 'tab-header';和下一行相同。 -
谢谢你,马特 - 看起来你找到了。再次感谢。
标签: javascript html loops for-loop getelementbyid