onclick텍스트 필드에 대한 입력 값을 얻기 위해 이벤트 핸들러를 사용할 수 있습니다 . 다음을 id통해 안전하게 참조 할 수 있도록 필드에 고유 한 속성 을 제공해야합니다 document.getElementById().
요소를 동적으로 추가하려면 요소를 배치 할 컨테이너가 있어야합니다. 예를 들어 <div id="container">. 를 document.createElement()사용 appendChild()하여 새 요소 를 만들고을 사용 하여 각 요소를 컨테이너에 추가합니다. 의미있는 name속성 을 출력하는 데 관심이있을 수 있습니다 (예 : 양식으로 제출할 경우 name="member"+i동적으로 생성 된 각에 대해) <input>.
을 사용하여 <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