Você pode usar um onclick
manipulador de eventos para obter o valor de entrada para o campo de texto. Certifique-se de dar ao campo um id
atributo exclusivo para que possa consultá-lo com segurança por meio de document.getElementById()
:
Se você deseja adicionar elementos dinamicamente, você deve ter um contêiner onde colocá-los. Por exemplo, a <div id="container">
. Crie novos elementos por meio de document.createElement()
e use appendChild()
para anexar cada um deles ao contêiner. Você pode estar interessado em gerar um name
atributo significativo (por exemplo, name="member"+i
para cada um dos <input>
s gerados dinamicamente se eles forem enviados em um formulário.
Observe que você também pode criar <br/>
elementos com document.createElement('br')
. Se você quiser apenas imprimir algum texto, pode usar document.createTextNode()
.
Além disso, se quiser limpar o contêiner toda vez que ele estiver prestes a ser preenchido, você pode usar hasChildNodes()
e removeChild()
junto.
<html>
<head>
<script type='text/javascript'>
function addFields(){
var number = document.getElementById("member").value;
var container = document.getElementById("container");
while (container.hasChildNodes()) {
container.removeChild(container.lastChild);
}
for (i=0;i<number;i++){
container.appendChild(document.createTextNode("Member " + (i+1)));
var input = document.createElement("input");
input.type = "text";
input.name = "member" + i;
container.appendChild(input);
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>
Veja um exemplo de trabalho neste JSFiddle .
Uncaught TypeError: Cannot call method 'appendChild' of undefined