我实现了一个具有开放和关闭功能的自定义下拉列表。使用冒泡开发的关闭功能在IE9,IE10,IE11等中运行良好,但我在IE8中收到错误消息,我不知道如何解决它。
错误消息为Unable to get property 'parentNode' of undefined or null reference
,并在elem = elem.parentNode;
函数中显示行close_handler
。
我的错误在哪里,我如何解决它?
function Dropdown(root, params) {
var doc = document;
var dropdown_input = root.querySelector('.dropdown-input');
var dropdown_arrow = root.querySelector('.dropdown-arrow');
var dropdown_content = root.querySelector('.dropdown-content');
add_event(dropdown_input, 'click', open_close, false);
add_event(dropdown_arrow, 'click', open_close, false);
add_event(doc, 'keydown', close_handler, false);
add_event(doc, 'click', close_handler, false);
var is_open = false;
function open_close() {
return is_open ? close() : open();
}
function open() {
remove_class(dropdown_content, 'hidden');
dropdown_content.scrollTop = 0;
is_open = true;
}
function close() {
dropdown_content.className += ' hidden';
is_open = false;
}
function close_handler(event) {
event = event || window.event;
if (event.keyCode === 27) {
close();
}
if (!event.keyCode) {
var elem = event.target;
while (elem !== doc) {
if (elem && elem.className === 'dropdown') {
return;
}
elem = elem.parentNode;
}
close();
}
}
}
答案 0 :(得分:2)
IE8不支持event.target
。您必须使用event.srcElement
:
var elem = event.target || event.srcElement;