вторник, 18 июня 2013 г.

JavaScript Хитрое навешивание событий при onclick и setTimeout

var a = document.getElementById('wrapper');
a.onclick = function () {
    alert(this.innerHTML);
    setTimeout(function(){
        alert(this.innerHTML);
    });
}

Поскольку в JavaScript внутри функций в первый раз this указывает на HTML-элемент, а во второй раз на глобальный объект Window, то во тором случае alert выведет 'undefined'.

Поэтому правильно писать надо так:

var a = document.getElementById('wrapper');
a.onclick = function () {
    var b = this;
    alert(b.innerHTML);
    setTimeout(function(){
        alert(b.innerHTML);
    });
}

Комментариев нет:

Отправить комментарий