我正在尝试更改已存在但隐藏的元素类。此问题是每当执行代码时抛出null异常。尝试了一切,但似乎无法得到什么错误
function changeMenu(code) {
var i, id = ["'demo'", "'drill'", "'alert'"];
for (i = 0; i <= 2; i += 1) {
if (document.getElementById(id[i]) !== null) {
if (i !== code) {
document.getElementById(id[i]).setAttribute('class', 'row hidden');
} else {
document.getElementById(id[i]).setAttribute('class', 'row');
}
} else {window.alert("error");}
}
}
脚本已经加载到文档的末尾,并且id也存在。
答案 0 :(得分:2)
此处的问题是,您在字符串中存储了'
的ID,因此当您致电document.getElementById("'demo'")
时,它将无法找到该元素并返回null
将您的id
数组声明更改为:
var i, id = ["demo", "drill", "alert"];
脚本已经加载到文档的末尾,并且id也存在。
是的,该ID已存在,但他们没有'
,只需将其从您的阵列中移除。
答案 1 :(得分:1)
引号和测试有几个问题
我相信你真的打算这样做:
var ids = ["demo", "drill", "alert"];
function changeMenu(code) {
for (var i = 0; i < ids.length; i++) {
var elm = document.getElementById(id[i]);
if (elm) { // element exists
elm.classList.toggle("hidden",ids[i] !== code);
}
else {
window.alert("error");
}
}
}