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
函数。
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
函数。