Javascript 中 DOM 的 onchange 不起作用

onchange of DOM in Javascript not working

var nameInput = document.createElement("input");
nameInput.type = "text";
nameInput.className = "loop_input";
nameInput.id = "nameAddress"+validLoadedEmails;
nameInput.value = data[0];
nameInput.onchange = editAddressHidden(validLoadedEmails);

好像是在创建元素的时候。它已经转到 editAddressHidden 函数,而不是在有更改时。

使用这个

nameInput.onchange = function(){ editAddressHidden(validLoadedEmails) };

因为您调用 editAddressHidden 函数并将返回值指定为输入更改处理程序,所以这不是您想要的。

鉴于您当前的代码:

nameInput.onchange = editAddressHidden(validLoadedEmails);

你可以把这看作是在说 "handle the onchange event of nameInput with whatever's returned from my editAddressHidden function"。但这是不对的(在本例中),因为您想使用 editAddressHidden 函数本身来处理 onchange 事件。

所以把它包在一个匿名函数中:

nameInput.onchange = function(){ editAddressHidden(validLoadedEmails) };

现在,每次触发 onchange 事件时,它都会调用您的函数,而这又会调用 editAddressHidden 函数。