1

我有一组简单的选项,它们基本上决定了哪些按钮应该在任何时候通过 Web 应用程序可见。

所以对于家庭来说,数组看起来像:第 1 步

if (view === "home") {
  visibleCommands = [];
  visibleCommands[0] = "contact";
  visibleCommands[1] = "about";
}
setVisibility(visibleCommands);

然后我遍历数组:步骤 2

setVisibility(visibleCommands) {
  var i;
  for (i in visibleCommands) {
    document.getElementById(visibleCommands[i].style.display = "inline";
  }
  addEvents(visibleCommands);
}

最后,对于可见命令,我想添加单独的事件侦听器:步骤 3

addEvents(visibleCommands) {
  var i;
  for (i in visibleCommands) {
    document.getElementById(visibleCommands[i]).addEventListener("click", visibleCommands[i], false);  
  }
}

但是,如果我将此行更改为:

document.getElementById(visibleCommands[i]).addEventListener("click", contact, false);

然后它正确地连接到元素并调用 contact() 函数。

我究竟做错了什么?

4

2 回答 2

1

你的代码:

document.getElementById(visibleCommands[i]).addEventListener("click", visibleCommands[i], false);

visibleCommands[i]id

document.getElementById(visibleCommands[i])

visibleCommands[i]点击回调

.addEventListener("click", visibleCommands[i], false);

怎么可能?

"contact"并且contact是两个不同的东西。第一个是带contact值的字符串,第二个是对函数的引用


另一件事:

document.getElementById(visibleCommands[i].style.display = "inline";

函数调用)中缺少:getElementById

document.getElementById(visibleCommands[i]).style.display = "inline";
于 2012-06-01T14:23:48.043 回答
0

你在哪里绑定处理程序?

document.getElementById(visibleCommands[i]).addEventListener("click", visibleCommands[i], false);

上一行中的第二个参数是一个不正确的字符串。它应该是处理函数。

试试下面的东西,

document.getElementById(visibleCommands[i]).addEventListener("click", function () {
   alert('Clicked');
}, false);

您可以阅读有关addEventListener

还要使用.push正确的方法将元素添加到数组中。见下文,

visibleCommands.push("contact");
visibleCommands.push("about");
于 2012-06-01T14:25:44.283 回答