Использование appendChild несколько раз с одним и тем же узлом в JS - PullRequest
11 голосов
/ 19 ноября 2010

Я пишу сценарий проверки формы для формы с несколькими оценками, и я хотел бы вставить текст с надписью «дайте оценку!» за каждый рейтинг пользователь пропускает. Я написал код ниже, чтобы сделать это, но я столкнулся с проблемой, когда узел give_rating добавляется только к последнему узлу в форме. Я знаю, что это потому, что appendChild в основном перемещает узел, а не дублирует его, и я попытался решить эту проблему с помощью cloneNode, но это полностью сломало мой JS.

В любом случае, вот код. Что я делаю не так?

Спасибо за помощь,

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

Когда я использую код выше, код give_rating добавляется только к 'rating2'.

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

Когда я использую этот код, весь скрипт завершается ошибкой. Как добавить экземпляр «Дайте оценку!» за каждую оценку в моей форме, которую пользователь не может заполнить?

Ответы [ 2 ]

5 голосов
/ 19 ноября 2010

JavaScript чувствителен к регистру: True должно быть true (нижний регистр).

1 голос
/ 03 ноября 2017
  1. Вы можете вставить созданные html-элементы или фрагменты документа только один раз.Таким образом, вы должны вызвать функцию cloneNode ().
  2. Javascript чувствителен к регистру.Таким образом, оно должно быть cloneNode(true) вместо cloneNode(True).
  3. . Вы можете включить отладчик javascript браузера (как Chrome, так и IE / Edge), нажав F12.Затем вы можете увидеть, что происходит с вашим сценарием.
...