2013-03-27 79 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

相关问题