无法读取属性'addEventListener'菜单上为null的
Cannot read property 'addEventListener' of null on menu
尝试实现响应菜单。添加了如下的脚本
(function() {
var bodyEl = document.body,
content = document.querySelector( '.content-wrap' ),
openbtn = document.getElementById( 'open-button' ),
closebtn = document.getElementById( 'close-button' ),
isOpen = false;
function init() {
initEvents();
}
function initEvents() {
openbtn.addEventListener( 'click', toggleMenu );
if( closebtn ) {
closebtn.addEventListener( 'click', toggleMenu );
}
// close the menu element if the target it´s not the menu element or one of its descendants..
content.addEventListener( 'click', function(ev) {
var target = ev.target;
if( isOpen && target !== openbtn ) {
toggleMenu();
}
} );
}
function toggleMenu() {
if( isOpen ) {
classie.remove( bodyEl, 'show-menu' );
}
else {
classie.add( bodyEl, 'show-menu' );
}
isOpen = !isOpen;
}
init();
})();
标记包括必要的类和按钮。由于某种原因,我在openbtn.addEventListener('click',toggleMenu);上无法读取null的属性'addEventListener';。Javascript新手还没能解决这个问题。
有什么建议吗?
在执行脚本时,元素很可能不在DOM中。在DOM初始化之后,您将需要调用init方法。
将脚本移动到body标记之后的底部。或者使用jquery并在$(document).ready()
中调用init方法。
此外,考虑将变量初始化移动到init方法
bodyEl = document.body,
content = document.querySelector( '.content-wrap' ),
openbtn = document.getElementById( 'open-button' ),
closebtn = document.getElementById( 'close-button' )
以便它们在加载dom之后读取正确的值,而不是在初始化脚本时读取。
相关文章:
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 数组在递归方法中设置为null
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- angular的下拉菜单
- 使用JQuery的动态上下文菜单
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 创建下拉菜单
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 来自文本输入null的html javascript变量
- 下拉菜单在菜单按钮的边缘闪闪发光
- Div根据<选择>菜单
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- php代码在textbox更改事件上显示null
- 硒IDE下拉菜单
- 无法读取属性'addEventListener'菜单上为null的
- 我一直收到未捕获的引用错误:未定义下拉菜单和未捕获的类型错误:无法读取 null 的属性“样式”
- 选择下拉菜单从Url=NULL HTML