繁体   English   中英

在匿名settimeout javascript函数中使用对象

[英]Using an object in an anonymous settimeout javascript function

我想在一段时间(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中设置此超时时间?

不要为setTimeout使用字符串。 只是不要 而是传递一个匿名函数( 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全局对象,该对象将失败,因为target是函数作用域变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM