Как при описании объекта описать событие для

 
0
 
JavaScript
ava
DEER | 01.08.2007, 14:08
День добрый… Пытаюсь написать объетк, один из элементов которого будет текстовое поле с формы…
Мне нужно в конструкторе прикрутить к полю событие – функцию с параметрами
Пробую вот так


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?
Comments (4)
ava
Zeroglif | 01.08.2007, 13:35 #
Не видно, как создаётся объект, не виден html. Из того, что видно только просится var перед oDiv, а так... код рабочий, попробуй проверить в функции MyObj, в какой момент потерялся oDiv. У меня всё работает.
ava
DEER | 01.08.2007, 13:41 #
Создается вот так

<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 не просто переменная, а тоже элемент объекта
ava
Zeroglif | 01.08.2007, 14:01 #
Цитата (DEER @ 1.8.2007, 13:41 findReferencedText)
то есть oDiv не просто переменная, а тоже элемент объекта

this в javascript летающий, то есть связывается динамически, зависит от выражения вызова. В функции onkeydown значением this является ссылка на инпут, свойств с именем oDiv у инпута нет, отсюда - undefined. Вариант в лоб - завести такое свойство инпуту или отказаться от this (как это было в предыдущем примере, где замыкание захватило лексическое окружение). Ну, или пересмотреть логику, например, передать в test id дива, а та уже этот элемент сама достанет....
ava
DEER | 01.08.2007, 14:07 #
Спасибо.
Пока ждал ответа сам стал задумываться а нужно ли мне oDiv делать елементом объекта... он же у меня только создается и нигде больше не используется. Тщ есть oDiv вполне сможет быть обыкновенной переменной.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  DEER   Zeroglif
advanced
Submit