Здравствуйте!
Мой вопрос состоит из двух частей...
К примеру, имеется простейшая страничка:
<html>
<head>...</head>
<body>
<div id="box" style="background-color: red;">Text...
<input type="button" value="X" />
</div>
</body>
</html>
И к ней подключен *.js-файл (с использованием регистрацией событий по W3C) такого плана:
document.getElementsByTagName("input")[0].addEventListener("click", hide, false);
function hide() {
this.style.display = "none";
}
Понятное дело, желаемого эффекта в виде скрытия
div#box по нажатию на кнопку 'X' мы не достигнем, т.к. ключевое слово
'this' относится к "обладателю" функции, а именно - к самой кнопке. Вроде бы и функция универсальная (т.е. не зависит от контекста), но всё плохо...
Посдкажите, как в данном случае сохранить универсальность функции и тип регистрации событий, только чтобы всё работало?
---
Вторая часть вопроса заключается в том, как быть в ситуации, если я, например, хочу задержать выполнение функции в вышеописанной ситуации на 300мс(?):
function delay() {
var temp = setTimeout("hide()",300);
}
function hide() {
this.style.display = "none";
}
Здесь, также результат отрицательный, т.к. указатель
'this' направлен на функцию
delay(). Как пользовать 'this', если функция вложена в функцию?
---
P.S. Приведенные выше примеры, написаны для наглядности. Меня интересует решение проблем в общем, а не частном случае.
P.P.S. Заранее благодарен всем!