我试图创建一个页面,用户可以通过添加额外的div或嵌套的div(尽可能深的层数)来自定义表单以满足他们的需求。在每个div中,我想要有文本输入和一个按钮,在同一级别添加另一个div,并在其中嵌入一个div。两个div都应该有一个文本输入和一个按钮来完成同样的事情。有没有办法动态创建嵌套的div onclick?
但是我有点卡住了。当我尝试创建一个嵌套的div时,我总是最终将其添加到最底层而不是其父层。
<html>
<script type="text/javascript">
var counter = 1;
function addNode() {
var newDiv = document.createElement('div');
counter++;
newDiv.innerHTML = "Entry " + counter + " <br><input type='text' name='myInputs'>";
document.getElementById("dynamicInput").appendChild(newDiv);
var newButton = document.createElement('button');
newButton.type = "button";
newButton.onclick = addSub;
document.getElementById("dynamicInput").appendChild(newButton);
}
function addSub() {
var newDiv = document.createElement('div');
counter++;
newDiv.innerHTML = "Entry " + counter + " <br><input type='text' name='myInputs' style='margin:10px'>";
document.getElementById("subInput").appendChild(newDiv);
}
</script>
<form class="form" method="POST">
<div id="dynamicInput" name="dynamicInput" multiple="multiple">
Entry 1<br><input type="text" name="myInputs">
<div id="subInput" name="subInput" multiple="multiple">
<input type="button" value="add nested" onClick="addSub();">
</div>
</div>
<input type="button" value="Add another text input" onClick="addNode();" >
<input type="submit" value = "answer" multiple="multiple"/>
</form>
</html>
你能提供一个小提琴吗? –
'addSub'似乎没有添加任何按钮。我相信你想重新组织你的代码,以便两个点击处理程序调用一些函数来创建div。 –
然后,请注意,无论使用哪个按钮调用它,addNode都执行完全相同的操作。还要注意,嵌套结构是短暂的:这种形式就是将所有输入发布到服务器的平面列表中。 –