我想在一定时间(1.5秒)后从页面中删除点击的元素。 这是代码(包括一些背景信息):
function AttachEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, handler)
} else {
element['on' + type] = handler;
}
}
AttachEvent(window, "load", function() {
AttachEvent(mydiv, "click", do_stuff);
});
function do_stuff(e){
e = e || window.event;
var target = e.target || e.srcElement;
//some stuff
//remove object
setTimeout('target.parentNode.removeChild(element);', 1500);
}
Internet Explorer抱怨匿名函数中的目标未定义。 如何在Internet Explorer中设置此超时?
答案 0 :(得分:1)
不要为setTimeout
使用字符串。 Just don't。而是传递一个匿名函数(demo):
function do_stuff(e){
e = e || window.event;
var target = e.target || e.srcElement;
//some stuff
//remove object
setTimeout(function(){target.parentNode.removeChild(target);}, 1500);
}
如果使用上述功能,target
的当前值将在匿名函数内使用。如果您传递一个字符串,浏览器将查找名为target
的全局对象,该对象将失败,因为它是一个函数范围变量。