2010-11-19 15 views
9

J'écris un script de validation de formulaire pour un formulaire avec plusieurs évaluations, et j'aimerais insérer un peu de texte qui dit "donner une note!" pour chaque évaluation, l'utilisateur manque. J'ai écrit le code ci-dessous pour le faire, mais je rencontre un problème où le noeud give_rating est seulement ajouté au dernier noeud du formulaire. Je sais que c'est parce que appendChild déplace fondamentalement un noeud au lieu de le dupliquer, et j'ai essayé de le résoudre en utilisant cloneNode mais cela casse complètement mon JS.Utilisation d'appendChild plusieurs fois avec le même noeud dans JS

Quoi qu'il en soit, voici le code. Qu'est-ce que je fais mal?

Merci pour votre aide,

Chris

var give_rating = document.createElement('span'); 
give_rating.className='small red'; 
give_rating.innerHTML = '<strong> &nbsp;Give a rating!</strong>'; 

document.getElementById('rating1').appendChild(give_rating); 
document.getElementById('rating2').appendChild(give_rating); 

Lorsque j'utilise le code ci-dessus le code give_rating est seulement ajoutées 'Rating2'.

document.getElementById('rating1').appendChild(give_rating.cloneNode(True)); 
document.getElementById('rating2').appendChild(give_rating.cloneNode(True)); 

Lorsque j'utilise ce code, le script entier échoue. Comment ajouter une instance de "Donnez une note!" pour chaque note sur mon formulaire que l'utilisateur ne parvient pas à remplir?

Répondre

4

JavaScript est sensible à la casse: True doit être true (minuscules).

+0

OMG casablanca, j'ai littéralement téléchargé Firebug juste après avoir soumis cette question, a lancé la console et compris cela. Merci pour votre réponse. JS me rend fou :) – Chris

0
  1. Vous ne pouvez insérer les éléments html ou les pièces de document créés qu'une seule fois. Donc, vous devez appeler la fonction cloneNode().
  2. Le javascript est sensible à la casse. Donc, il devrait être cloneNode(true), au lieu de cloneNode(True). Vous pouvez activer le débogueur JavaScript du navigateur (Chrome et IE/Edge) en appuyant sur F12. Ensuite, vous pouvez voir ce qui arrive à votre script.
Questions connexes