2011-07-11 13 views
1

私の関数を通して要素を渡してidを出力しようとしています。ここでJavascript動的要素Id

は、私が何を意味するかです:

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

とJavaScript:

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

これは、次の操作を行うための正しい方法は何ですか?アラートを受け取ったときに得られるのは未定義です。ありがとうございました。

+3

[あなたが最初の引数として文字列を使用しないでください'setTimeout()'は 'eval'を使うのと同じだからです。](https://developer.mozilla.org/ja/window.setTimeout) – Saxoier

答えて

4

setTimeout関数から呼び出された場合、ポインタはwindowオブジェクトを指しているのではなく、入力要素を指していません。あなたは何ができるか

はまだ

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

またはそれ以上である:

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

と要素の:

onKeyDown="setTimeout(validateFn(this), 10)" 
+0

パーフェクト!ハ、私は狂ったと思った。 – grep

+0

+1よろしくお願いします! – qwertymk

関連する問題