Показать сообщение отдельно
  #1 (permalink)  
Старый 01.10.2010, 14:40
Новичок на форуме
Отправить личное сообщение для JackScore Посмотреть профиль Найти все сообщения от JackScore
 
Регистрация: 01.10.2010
Сообщений: 7

Вызов функции из другой функции и волшебное слово 'this'
Здравствуйте!
Мой вопрос состоит из двух частей...
К примеру, имеется простейшая страничка:
<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. Заранее благодарен всем!

Последний раз редактировалось JackScore, 13.10.2010 в 17:47.
Ответить с цитированием