Идентификатор динамического элемента Javascript - PullRequest
1 голос
/ 11 июля 2011

Я пытаюсь передать элемент через мою функцию и вывести идентификатор.

Вот что я имею в виду:

<input id='password' style="display:inline-block" type="password" name='Password' onKeyDown="setTimeout('validate(this)', 10)" />

и javascript:

var validate = function(element)
{
    alert(element.id);        
}

Это правильный способ сделать следующее?Все, что я получаю, не определено, когда он предупреждает.Спасибо.

1 Ответ

4 голосов
/ 11 июля 2011

При вызове из функции setTimeout указатель this больше не указывает на элемент ввода, а указывает на объект window.

Что вы можете сделать, это

onKeyDown="var self=this;setTimeout(function(){validate(self);}, 10)"

Или еще лучше:

var validateFn = function(element) {
    return function(){
        alert(element.id);
    };
}

и на элементе:

onKeyDown="setTimeout(validateFn(this), 10)"
...