【发布时间】:2014-11-24 06:32:25
【问题描述】:
我必须在一个项目中使用原生 JavaScript。我有一些功能,其中一个是打开菜单的按钮。它适用于目标 id 存在的页面,但会在 id 不存在的页面上导致错误。在函数找不到 id 的那些页面上,我收到“无法读取属性 'addEventListener' of null ”错误,并且我的其他函数都不起作用。
以下是打开菜单的按钮的代码。
function swapper() {
toggleClass(document.getElementById('overlay'), 'open');
}
var el = document.getElementById('overlayBtn');
el.addEventListener('click', swapper, false);
var text = document.getElementById('overlayBtn');
text.onclick = function(){
this.innerHTML = (this.innerHTML === "Menu") ? "Close" : "Menu";
return false;
};
我该如何处理?我可能需要将此代码全部包装在另一个函数中或使用 if/else 语句,以便它只搜索特定页面上的 id,但不确定。
【问题讨论】:
-
你能显示html代码吗?似乎找不到 id 为“overlayBtn”的元素
-
在函数找不到 id 的页面上,我收到“无法读取属性 'addEventListener' of null ”错误,并且我的其他函数都不起作用。我认为答案几乎就在问题中。您找不到该元素,因此无法向其添加事件侦听器...
-
如果您在 html 中使用了
class而不是id并且您在脚本中调用了getElementById,则很容易发生这种情况。 -
刚刚遇到
addEventListener could be null的类似问题。在<body/>标签之后移动<script src="..."></script>似乎可以解决这个问题。 -
@Reborn 我收到这个错误很久了。这解决了它。
标签: javascript function getelementbyid addeventlistener