无法使用数组

时间:2018-01-26 10:11:09

标签: javascript html arrays string loops

我正在尝试更改已存在但隐藏的元素类。此问题是每当执行代码时抛出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也存在。

2 个答案:

答案 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");
    }
  }
}