2010-11-19 5 views
9

Ich schreibe ein Formular Validierung Skript für ein Formular mit mehreren Bewertungen, und ich möchte ein wenig Text mit der Aufschrift "geben Sie eine Bewertung!" für jede Bewertung fehlt der Nutzer. Ich habe den Code dafür geschrieben, aber ich stoße auf ein Problem, bei dem der give_rating-Knoten nur an den letzten Knoten im Formular angehängt wird. Ich weiß, dass dies daran liegt, dass appendChild im Grunde einen Knoten verschiebt, anstatt ihn zu duplizieren, und ich habe versucht, dies mit cloneNode zu lösen, aber das bricht nur mein JS vollständig.Verwenden von appendChild mehrmals mit dem gleichen Knoten in JS

Wie auch immer, hier ist der Code. Was mache ich falsch?

Danke für Ihre Hilfe,

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); 

Wenn ich den obigen Code Code give_rating verwenden wird nur auf 'Rating2' angehängt.

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

Wenn ich diesen Code verwenden, schlägt das gesamte Skript fehl. Wie füge ich eine Instanz von "Gib eine Bewertung!" für jede Bewertung auf meinem Formular, die der Benutzer nicht ausfüllt?

Antwort

4

JavaScript ist case-sensitive: True sollte true (Kleinbuchstaben) sein.

+0

OMG Casablanca, ich heruntergeladen Firebug direkt nach dem Einreichen dieser Frage, rannte Konsole und fand dies heraus. Vielen Dank für Ihre Antwort. JS macht mich verrückt :) – Chris

0
  1. Sie können die erstellten HTML-Elemente oder Dokumentstücke nur einmal einfügen. Sie müssen also die Funktion cloneNode() aufrufen.
  2. Das Javascript unterscheidet zwischen Groß- und Kleinschreibung. Also sollte es cloneNode(true) statt cloneNode(True) sein.
  3. Sie können den Javascript-Debugger des Browsers (sowohl Chrome als auch IE/Edge) durch Drücken von F12 aktivieren. Dann können Sie sehen, was mit Ihrem Skript passiert.