JavaScript onChange使用DOM元素不起作用

JavaScript onChange使用DOM元素不起作用,javascript,Javascript,我尝试在JavaScript中为输入创建onchange侦听器时遇到问题: var apple = document.getElementById("apple"); apple.addEventListener("change", validate("apple")); function validate(fruitName){ var qty = parseInt(document.getElementById(fruitName).value); console.log(

我尝试在JavaScript中为输入创建onchange侦听器时遇到问题:

var apple = document.getElementById("apple");
apple.addEventListener("change", validate("apple"));

function validate(fruitName){
    var qty = parseInt(document.getElementById(fruitName).value);
    console.log(qty);
}
我试图检查每次当用户输入“apple”输入时,我都会在控制台上打印数量。但通过这样做,它只在我第一次打印NaN刷新浏览器时运行,甚至在我更改“apple”的输入时也不起作用

有什么想法吗


提前感谢。

您必须引用该函数,而不是调用它,并且不需要传入名称作为ID来获取元素,该元素已在
中可用

var apple = document.getElementById("apple");

apple.addEventListener("change", validate);

function validate(event){
    var qty = parseInt(this.value, 10);
    console.log(qty);
}
无论何时添加括号,都会调用函数,返回的内容都会传递给事件处理程序。

默认情况下,函数返回
未定义的
,这就是您得到的结果。

好吧,您不会返回任何将在更改事件中调用的函数
未定义的
不是事件侦听器。很抱歉,但我试图做的是将作为结果名的字符串传递给validate(),这也是ID,您可以通过
this.id
获得该名称,但是执行
document.getElementById(this.id)
没有任何意义,因为它只会返回与
this
相同的内容。抱歉,但我想做的是我实际上得到了一些水果。然后,当我调用validate时,我希望传入水果名称,并将其用于代码中的其他地方。var apple实际上是数量,抱歉命名惯例我有点困惑,你有一个输入,你改变了输入,你用这个值得到了数量,你为什么要传递数量?你试过上面的代码吗?