我是新人。我已经在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>
答案 0 :(得分:1)
第一个输入不起作用的原因 - 你的e
变量被覆盖,它指向第二个输入,此时为空。
如果你删除了第二个输入的2行,你会发现e.value
可以正常工作 -
working example
或者只是为变量指定不同的名称 - e1
和e2
- example
答案 1 :(得分:1)
函数中的e
应该引用触发事件的元素。您应该将其更改为function (e) {alert (e.target.value); }; }
现在e
是触发onkeyup功能的事件,你可以访问目标来获取值。