IE8中的addEventListener错误

时间:2015-11-09 21:20:57

标签: addeventlistener

我在ie8中收到错误消息:Object不支持属性或方法'addEventListener'。我怎样才能解决这个问题?我已经看到添加else语句并将addEventListener更改为attachEvent。但是,我在js的土地上有点绿,不知道应该去哪里,我确实试过了几个方法。

$(document).ready(function(){

// Off canvas menu
var $slider = document.querySelector('#slider');
var $toggle = document.querySelector('.toggle-nav');
var $toggle2 = document.querySelector('nav .toggle-nav');
// var $link = document.querySelector('.link > a');

$toggle.addEventListener('click', function() {
    var isOpen = $slider.classList.contains('slide-in');

    $slider.setAttribute('class', isOpen ? 'slide-out' : 'slide-in');
    $('#slider').animate({'right': '100%'}, 400);
});

$toggle2.addEventListener('click', function() {
    var isOpen = $slider.classList.contains('slide-in');

    $slider.setAttribute('class', isOpen ? 'slide-out' : 'slide-in');
    $('#slider').animate({'right': '0'}, 300);
});

var toggleDataAttr = function(parentElem, toggleElem, opt1, opt2, dataAttr) {
    var toggleElem = parentElem.querySelector(toggleElem);
    toggleElem.setAttribute(dataAttr, toggleElem.getAttribute(dataAttr) === opt1 ? opt2 : opt1);
};

var toggle_li = document.querySelectorAll('li');

for (var i = 0; i < toggle_li.length; i++) {
    toggle_li[i].onclick = function() {
        toggleDataAttr(this, '.toggleContent', 'closed', 'open', 'data-state');
        toggleDataAttr(this, '.toggleIcon', 'down', 'up', 'data-icon');
    };
}

});

1 个答案:

答案 0 :(得分:0)

IE8及更低版本不支持

addEventListener()(此处更多信息:http://www.w3schools.com/jsref/met_document_addeventlistener.asp),而您需要在这些浏览器中使用attachEvent()。

你可以像这样使用它:

if(element.addEventListener()) {
  element.addEventListener('click', myFunction(), true);
} else if(element.attachEvent()) {
  element.attachEvent('click', myFunction());
}

这样做可以使它与多浏览器兼容。

相关问题