Использование объекта в анонимной функции settimeout javascript - PullRequest
0 голосов
/ 17 марта 2012

Я хочу удалить выбранный элемент со страницы через определенное время (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?

1 Ответ

1 голос
/ 17 марта 2012

Не используйте строку для 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, который потерпит неудачу, так как нацеливается на переменную области действия функции.

...