10
votes

Création de champ d'entrée pour la forme HTML ... mais ajoutez une «étiquette» pour elle aussi?

J'ai un formulaire HTML. Lorsque vous cliquez sur le bouton, une fonction JavaScript ajoute un nouveau champ. J'essaie d'avoir la fonction ajouter également une «étiquette» pour le terrain.

J'ai essayé d'utiliser document.createeelement ("label"), mais cela ne me permet pas de changer le InnerHTML (ou peut-être que je le fais mal ..), ni ajouter une fermeture

Voici mon code. Merci! Instance de var = 2; xxx


3 commentaires

Publiez votre code où vous avez essayé de faire un document.createelement ('étiquette') afin que nous puissions le déboguer.


Désolé, l'a supprimé parce que je pensais que c'était inutile: var label = document.createeelement ("label"); label.htmlfor = newinput.id; label.value = "prénom";


Il n'y a pas de telle chose que label.value .


3 Réponses :


10
votes
   function newTextBox(element)
            {               
                    instance++; 
                    // Create new input field
                    var newInput = document.createElement("INPUT");
                    newInput.id = "text" + instance;
                    newInput.name = "text" + instance;
                    newInput.type = "text";

                    var label = document.createElement("Label");

                    label.htmlFor = "text" + instance;
                    label.innerHTML="Hello";
                    instance++; 

                    document.body.insertBefore(document.createElement("BR"), element);
                    document.body.insertBefore(newInput,element);
                    document.body.insertBefore(label, newInput);
Note that for attribute of the label tag, corresponds to the property htmlFor fo the label object in javascript

2 commentaires

Vous ne pouvez pas utiliser étiquette.for . La réponse de Proto Bassi est correcte.


Réellement. Ces deux réponses sont erronées à certains égards. Ils préconisent tous les deux à l'aide d'innerhtml qui est mauvais mais plus important, le 'for' est défini à l'aide de label.htmlfor



8
votes

L'exemple de Vincent ne fonctionne pas.

Essayez ceci: xxx


3 commentaires

C'est la bonne réponse. L'attribut pour doit être défini à l'aide de setattribute .


-1 pour la suggestion de la création DOM et ensuite l'utilisation innerhtml au lieu de document.createtextNode


@Rafe, veuillez donner un exemple sur la manière dont vous définirez le type sur "L'étiquette" et comment vous allez définir un attribut sur un texte de texte. Je ne pense pas que votre commentaire est de toute façon utile.



0
votes
<div id="somediv">
 some div
</div>

<script>

var instance = 0;

function newTextBox(element){               

instance++; 
// Create new input field
var newInput = document.createElement("INPUT");
newInput.id = "text" + instance;
newInput.name = "text" + instance;
newInput.type = "text";

var newlabel = document.createElement("Label");
newlabel.setAttribute("for","text" + instance);
newlabel.innerHTML = "Here goes the text";
document.getElementById("somediv").appendChild(newlabel);
document.getElementById("somediv").appendChild(newInput);
}

</script>

0 commentaires