2013-03-27 112 views
1

我是新來的。我在stackoverflow上閱讀了很多,但這是我的第一個問題。希望這不是一個愚蠢的。我知道人羣有時可能會非常苛刻,而且通常是值得的。 :)爲什麼'THIS.VALUE的工作,但e.value不?

在下面的代碼,當你在第一個輸入框中輸入文本,警報不顯示你輸入。然而,在第二個框中,當您鍵入內容時,警報會顯示它。

所不同的是,在使用 'THIS.VALUE' 的VS 'e.value'。

我在想,他們應該因爲「e.value」都工作參考的元素,我想「THIS.VALUE」確實還可以,但顯然我失去了一些東西,因爲它不會做同樣的事情。

在此先感謝。

<!DOCTYPE html> 
<html> 
<head><script> 
window.onload = function() {var e; 
    e = document.getElementById('eInput'); 
    if (!e.onkeyup) {e.onkeyup = function() {alert (e.value); }; } 
    e = document.getElementById('thisInput'); 
    if (!e.onkeyup) {e.onkeyup = function() {alert (this.value); }; } 
} 
</script></head> 
<body> 
<input type="text" id='eInput'></input><br><br> 
<input type="text" id='thisInput'></input> 
</body> 
</html> 

回答

1

e在函數中應該引用觸發事件的元素。您應該將其更改爲function (e) {alert (e.target.value); }; }

現在,e是觸發onkeyup函數的事件,您可以訪問目標以獲取該值。

請參閱http://jsfiddle.net/yAaYX/

+0

謝謝。新技術對我來說。我將不得不再研究一下。它按照你的例子工作。非常感激! – 2013-03-27 16:29:50

1

之所以第一輸入不起作用 - 您e變量被覆蓋掉,並將其指向第二個輸入,這在當時是空的。

如果去掉2線2號輸入你會看到它的作品只是罰款e.value - working example

或者只是給變量不同的名稱 - e1e2 - example

+0

謝謝。 e =元素。在將事件功能分配給eInput元素之後,我沒有意識到e被更改會很重要。由於在將事件分配給1st元素之後它被重新分配。然後我只是重新使用變量來爲第二個元素分配一個事件。因爲我不明白爲什麼重用e變量是一個問題,所以我必須閱讀更多。 – 2013-03-27 16:25:44

相關問題