在IE8中,我的菜单脚本似乎没有顺利进行。但经过多次搜索,我无法弄清楚它为什么会抛出错误:
SCRIPT5007: Unable to get value of the property 'call': object is null or undefined
site.js, line 5 character 5
我的剧本是:
var anchor = document.querySelectorAll('button');
[].forEach.call(anchor, function(anchor){
var open = false;
anchor.onclick = function(event){
event.preventDefault();
if(!open){
this.classList.add('close');
open = true;
}
else{
this.classList.remove('close');
open = false;
}
};
});
此脚本处理我的移动导航,但由于我还在学习,我无法解决这个问题。谁能帮助我指出正确的方向?
答案 0 :(得分:3)
由于您已使用jQuery标记了问题,请使用$.each()来迭代数组。
使用jQuery可以写成
$('button').click(function(){
$(this).toggleClass('close')
})
vanila脚本解决方案可以
var anchor = document.querySelectorAll('button');
function handler(e) {
if (/\bclose\b/.test(this.className)) {
this.className = this.className.replace(/\bclose\b/, '');
} else {
this.className += ' close';
}
}
for (var i = 0; i < anchor.length; i++) {
if (window.addEventListener) {
anchor[i].addEventListener('click', handler, false);
} else {
anchor[i].attachEvent('onclick', handler);
}
}
演示:Fiddle