Javascript 使用=innerHTML更新html后getElementByID.onchange不工作
我的起始html如下所示:Javascript 使用=innerHTML更新html后getElementByID.onchange不工作,javascript,onchange,innerhtml,getelementbyid,Javascript,Onchange,Innerhtml,Getelementbyid,我的起始html如下所示: <label> Names: </label><br> <input type="text" class="form-control name" placeholder="name1" id="name1" name ="name1"><br> 名称: 我有一个捕获html的变量: var html =
<label> Names: </label><br>
<input type="text" class="form-control name" placeholder="name1" id="name1" name ="name1"><br>
名称:
我有一个捕获html的变量:
var html = "<label> Names: </label><br><input type=\"text\" class=\"form-control name\" placeholder=\"name1\" id=\"name1\" name =\"name1\"><br>"
var html=“名称:
”
然后我有一个onchange操作符,当第一行中有文本时,它执行几个函数。.onchange在第一次被很好地提取,随后的函数被运行。我最后得到了一个额外的行:
for (n = 1; n < inputLength+1 ; ++n) {
var test2 = document.getElementById(dude+n);
test2.onchange = forFunction
}
function forFunction() {
for (m = 1; m < inputLength+1 ; ++m) {
var test = document.getElementById(dude+m)
if (test.value != "") {
var txt = "<input type=\"text\" class=\"form-control name\" placeholder="+dude+(m+1)+" id="+dude+(m+1)+" name="+dude+(m+1)+"><br>";
document.getElementById('group_names').innerHTML = updateHTML(txt);
//function updateHTML(txt)
}
}
}
var html = "<label> Names: </label><br><input type=\"text\" class=\"form-control name\" placeholder=\"name1\" id=\"name1\" name =\"name1\"><br>"
function updateHTML(txt) {
html = html + txt;
return html;
}
for(n=1;n”;
document.getElementById('group_names')。innerHTML=updateHTML(txt);
//函数updateHTML(txt)
}
}
}
var html=“名称:
”
函数updateHTML(txt){
html=html+txt;
返回html;
}
问题是,在完成所有这些之后,我最终得到了所需的两个输入行:name1和name2。但是,当我第二次在这些字段中输入文本时,.onchange不会被拾取。但是当我检查和查看html时,元素就在html中
还有,当我
log(inputFormDiv.getElementsByTagName('input').length)
在我第一次运行函数后(在我第一次更改输入字段中的值时),输入的长度从1增加到2,这样就可以正确识别,而不是.onchange
想法?只有当添加到html的属性中并且用户从文本框中单击时,onchange才会起作用,例如:
<input onchange="forFunction()" type="text" class="form-control name" placeholder="name1" id="name1" name ="name1">
但是,如果您希望在用户键入按键时触发事件,请使用按键事件。e、 g:
var test2 = document.getElementById(dude+n);
test2.addEventListener('keypress', forFunction, false
一个基本示例:只有在添加到html上的属性并且用户从文本框中单击时,onchange才会起作用,例如:
<input onchange="forFunction()" type="text" class="form-control name" placeholder="name1" id="name1" name ="name1">
但是,如果您希望在用户键入按键时触发事件,请使用按键事件。e、 g:
var test2 = document.getElementById(dude+n);
test2.addEventListener('keypress', forFunction, false
一个基本示例:而不是
.innerHTML=html+text
执行.insertAdjacentHTML('beforeend',text)
,这样可以保持原始html(和事件绑定)
编辑:而不是
。innerHTML=html+text
执行。insertAdjacentHTML('beforeend',text)
,这样可以保留原始html(和事件绑定)
编辑:谢谢你,Greg,但不幸的是,eventListener在使用innerHTML创建输入字段后也不会拾取对这些字段的更改。除非我做错了什么。以下是我对(n=1;n