您可以使用onclick
事件处理程序来获取文本字段的输入值。确保为字段赋予唯一id
属性,以便可以通过document.getElementById()
以下方式安全地引用该字段:
如果要动态添加元素,则应该在容器中放置它们。例如,一个<div id="container">
。通过创建新元素document.createElement()
,并使用appendChild()
将每个元素附加到容器。您可能对输出有意义的name
属性感兴趣(例如name="member"+i
,<input>
对于要以表格形式提交的每个动态生成的s,则可能会感兴趣)。
请注意,您还可以使用创建<br/>
元素document.createElement('br')
。如果只想输出一些文本,则可以使用document.createTextNode()
。
另外,如果您想在每次将要填充的容器时都将其清除,则可以将hasChildNodes()
和removeChild()
一起使用。
<html>
<head>
<script type='text/javascript'>
function addFields(){
// Number of inputs to create
var number = document.getElementById("member").value;
// Container <div> where dynamic content will be placed
var container = document.getElementById("container");
// Clear previous contents of the container
while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}
for (i=0;i<number;i++){
// Append a node with a random text
container.appendChild(document.createTextNode("Member " + (i+1)));
// Create an <input> element, set its type and name attributes
var input = document.createElement("input");
input.type = "text";
input.name = "member" + i;
container.appendChild(input);
// Append a line break
container.appendChild(document.createElement("br"));
}
}
</script>
</head>
<body>
<input type="text" id="member" name="member" value="">Number of members: (max. 10)<br />
<a href="#" id="filldetails" onclick="addFields()">Fill Details</a>
<div id="container"/>
</body>
</html>
请参阅此JSFiddle中的工作示例。
Uncaught TypeError: Cannot call method 'appendChild' of undefined