Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как при описании объекта описать событие для, его элемента с параметрами 
:(
    Опции темы
DEER
Дата 1.8.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 2
Всего: 13



День добрый…  Пытаюсь написать объетк, один из элементов которого будет текстовое поле с формы…
Мне нужно в конструкторе прикрутить к полю событие – функцию с параметрами
Пробую вот так

Код

function MyObj(DivId, tbId) {
    this.oTextBox = document.getElementById(tbId);
    oDiv = document.getElementById(DivId);

    this.oTextBox.onkeydown = function() { 
test(oDiv);  // вот сдесь нужно передать параметр к функции – объект - oDiv
}
}

function test(obj) {
    alert(obj);  // выводит «undefened»
}


Подскажите пожалуйста как такое правильно делать...
Или как можно использовать в функции test элемент oDiv из экземпляра MyObject?



--------------------
 
PM MAIL WWW ICQ MSN   Вверх
Zeroglif
Дата 1.8.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Не видно, как создаётся объект, не виден html. Из того, что видно только просится var перед oDiv, а так... код рабочий, попробуй проверить в функции MyObj, в какой момент потерялся oDiv. У меня всё работает.
PM MAIL WWW   Вверх
DEER
Дата 1.8.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 2
Всего: 13



Создается вот так
Код

      <script type="text/javascript" language="JavaScript1.2">new MyObj("myDiv", "companySearcher")</script>


такс... код действительно рабочий получается....
Ща посмотрел - сравнил со своим кодом.. есть разница...
Код

function MyObj(DivId, tbId) {
    this.oTextBox = document.getElementById(tbId);
    this.oDiv = document.getElementById(DivId);
    this.oTextBox.onkeydown = function() { 
      test(this.oDiv);  // вот сдесь нужно передать параметр к функции – объект - oDiv
     }
}
function test(obj) {
    alert(obj);  // выводит «undefened»
}
  
то есть oDiv не просто переменная, а тоже элемент объекта


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
Zeroglif
Дата 1.8.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(DEER @  1.8.2007,  13:41 Найти цитируемый пост)
то есть oDiv не просто переменная, а тоже элемент объекта

this в javascript летающий, то есть связывается динамически, зависит от выражения вызова. В функции onkeydown значением this является ссылка на инпут, свойств с именем oDiv у инпута нет, отсюда - undefined. Вариант в лоб - завести такое свойство инпуту или отказаться от this (как это было в предыдущем примере, где замыкание захватило лексическое окружение). Ну, или пересмотреть логику, например, передать в test id дива, а та уже этот элемент сама достанет....
PM MAIL WWW   Вверх
DEER
Дата 1.8.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: 2
Всего: 13



Спасибо.
Пока ждал ответа сам стал задумываться а нужно ли мне oDiv делать елементом объекта... он же у меня только создается и нигде больше не используется. Тщ есть oDiv вполне сможет быть обыкновенной переменной.


--------------------
 
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.