1

我是新来的。我在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>
4

2 回答 2

2

函数中的e应该引用触发事件的元素。你应该把它改成function (e) {alert (e.target.value); }; }

现在e是触发 onkeyup 函数的事件,您可以访问目标以获取值。

http://jsfiddle.net/yAaYX/

于 2013-03-27T15:25:30.910 回答
1

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

如果您删除第二个输入的 2 行,您会发现它可以正常工作e.value- 工作示例

或者只是给变量不同的名称 -e1e2-示例

于 2013-03-27T15:25:16.893 回答