我正在使用此代码:
<html>
<head>
<title>Dynamic Form</title>
<script type="text/javascript">
var i = 6;
function CreateTextbox(){
createTextbox.innerHTML = createTextbox.innerHTML
+'<input type=text name="flow'+i+'"/>'
i++;
}
</script>
</head>
<body>
<form name="form" action="post">
<input type="button" name="what" value="clickHere" onClick="CreateTextbox()"/>
<div id="createTextbox"></div>
</form>
</body>
当我添加新文本框时,将删除在上一个文本框中输入的值。我怎么能保留它?
答案 0 :(得分:1)
通过连接innerHTML来添加HTML元素非常慢,这导致值被清除,因为容器(div createTextbox
)和所有子项都是在每个innerHTML赋值上重新创建的。
我建议您使用document.createElement
以编程方式创建输入元素,并使用appendChild
将元素附加到容器div:
window.onload = function () {
var createTextbox = function () {
var i = 6,
container = document.getElementById('createTextbox');
return function () {
var div = document.createElement('div'),
input = document.createElement('input');
input.type= "text";
input.name = "flow" + i;
div.appendChild(input);
container.appendChild(div);
i++;
}
}();
// event binding
document.getElementById('addButton').onclick = createTextbox;
}
检查上述代码here。
答案 1 :(得分:0)
当您重新定义其innerHTML属性时,您可能会强制浏览器重新创建该元素,这会导致您在此过程中丢失其值。
可以用
完成 var elem = document.createElement("input");
someDOMElement.childNodes.add(elem);
组合?