无法读取菜单上的空 属性 'addEventListener'
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 ) 上读取 属性 'addEventListener' of null;。 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 加载后读取正确的值,而不是在脚本初始化时读取。
正在尝试实现响应式菜单。 添加脚本如下
(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 ) 上读取 属性 'addEventListener' of null;。 Javascript 菜鸟,没能解决这个问题。
有什么建议吗?
很可能在执行脚本时,元素不在 DOM 中。 DOM 初始化后,您需要调用 init 方法。
将脚本移到 body 标签后的底部。或者使用 jquery 并在 $(document).ready()
.
此外,考虑将变量初始化移至 init 方法
bodyEl = document.body,
content = document.querySelector( '.content-wrap' ),
openbtn = document.getElementById( 'open-button' ),
closebtn = document.getElementById( 'close-button' )
以便它们在 dom 加载后读取正确的值,而不是在脚本初始化时读取。