Vous pouvez utiliser un onclick
gestionnaire d'événements pour obtenir la valeur d'entrée du champ de texte. Assurez-vous de donner au champ un id
attribut unique afin de pouvoir y faire référence en toute sécurité via document.getElementById()
:
Si vous souhaitez ajouter dynamiquement des éléments, vous devriez avoir un conteneur où les placer. Par exemple, a <div id="container">
. Créez de nouveaux éléments à l'aide de document.createElement()
et utilisez appendChild()
pour ajouter chacun d'eux au conteneur. Vous pourriez être intéressé par la sortie d'un name
attribut significatif (par exemple name="member"+i
pour chacun des <input>
s générés dynamiquement s'ils doivent être soumis dans un formulaire.
Notez que vous pouvez également créer des <br/>
éléments avec document.createElement('br')
. Si vous souhaitez simplement afficher du texte, vous pouvez utiliser à la document.createTextNode()
place.
De plus, si vous souhaitez effacer le conteneur à chaque fois qu'il est sur le point d'être rempli, vous pouvez utiliser hasChildNodes()
et removeChild()
ensemble.
<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>
Voir un exemple de travail dans ce JSFiddle .
Uncaught TypeError: Cannot call method 'appendChild' of undefined