È possibile utilizzare un onclick
gestore di eventi per ottenere il valore di input per il campo di testo. Assicurati di assegnare al campo un id
attributo univoco in modo da poterlo fare riferimento in sicurezza tramite document.getElementById()
:
Se vuoi aggiungere dinamicamente elementi, dovresti avere un contenitore in cui posizionarli. Ad esempio, a <div id="container">
. Creare nuovi elementi mediante document.createElement()
e utilizzare appendChild()
per aggiungere ciascuno di essi al contenitore. Potresti essere interessato all'output di un name
attributo significativo (ad esempio name="member"+i
per ciascuno degli <input>
s generati dinamicamente se devono essere presentati in un modulo.
Nota che potresti anche creare <br/>
elementi con document.createElement('br')
. Se vuoi solo produrre del testo, puoi usare document.createTextNode()
invece.
Inoltre, se vuoi svuotare il contenitore ogni volta che sta per essere popolato, puoi usare hasChildNodes()
e removeChild()
insieme.
<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>
Guarda un esempio funzionante in questo JSFiddle .
Uncaught TypeError: Cannot call method 'appendChild' of undefined