2011-07-11 78 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/zh/window.setTimeout) – Saxoier

回答

4

當從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)" 
+0

完美!哈,我以爲我瘋了。 – grep

+0

+1 Yay關閉! – qwertymk