为什么'this.value'有效,但e.value却没有?

时间:2013-03-27 15:09:56

标签: javascript this

我是新人。我已经在stackoverflow上阅读了很多内容,但这是我的第一个问题。希望这不是一个愚蠢的。我知道人群有时会很苛刻,而且往往也是如此。 :)

在以下代码中,当您在第一个输入框中输入文本时,警报不会显示您输入的内容。但是在第二个框中,当您输入内容时,警报会显示它。

不同之处在于使用'this.value'与'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>

2 个答案:

答案 0 :(得分:1)

第一个输入不起作用的原因 - 你的e变量被覆盖,它指向第二个输入,此时为空。

如果你删除了第二个输入的2行,你会发现e.value可以正常工作 - working example

或者只是为变量指定不同的名称 - e1e2 - example

答案 1 :(得分:1)

函数中的e应该引用触发事件的元素。您应该将其更改为function (e) {alert (e.target.value); }; }

现在e是触发onkeyup功能的事件,你可以访问目标来获取值。

请参阅http://jsfiddle.net/yAaYX/