неперехваченная ошибка NOT_FOUND_ERR DOM Исключение 8

#javascript #exception #appendchild

#javascript #исключение #appendchild

Вопрос:

Итак, я удаляю все содержимое под определенным div и добавляю содержимое сообщения. Однако javascript выдает следующую ошибку после завершения:

 Uncaught Error: NOT_FOUND_ERR: DOM Exception 8
  

Вот код, в котором он выполняется

  new Ajax.Request("profileThis.php",
 {
   method:'post',

   parameters:{title:title, review:review, userId:userId, category:category, categoryId:categoryId},

   onSuccess:function(ajax) 
   {
    alert(ajax.responseText); // this is just for debugging purposes

    var message=ajax.responseText;

    var divMessage=document.createElement("div");

    divMessage.style.color="rgb:(105,105,105)";

    divMessage.innerHTML=message;

    while($("reviewSheet").hasChildNodes)
    {
     $("reviewSheet").removeChild($("reviewSheet").lastChild);
    }

    $("reviewSheet").adopt(divMessage);         

   },

   onFailure:ajaxFailure,

   onException:ajaxFailure

 });
  

Люди прокомментировали, что проблема заключалась в том, как я назначил divMessage reviewSheet . Я пробовал оба adopt , appendChild но ни один не работает.
Небольшая помощь была бы признательна.

Комментарии:

1. $(«reviewSheet») Что это? Вы используете фреймворки javascript, или это псевдоним для document.getElementById() ? Если вам нужно удалить все узлы из элемента (пустой элемент), просто используйте element.innerHTML='';

2. Или вместо element.innerHTML='' использования кода: while(someParentElement.firstChild)someParentElement.removeChild(someParentElement.firstChild);

Ответ №1:

 divMessage.style.color="rgb:(105,105,105)";
  

должно быть

 divMessage.style.color="rgb(105,105,105)";
  

Комментарии:

1. Спасибо, но это не сработало. Я пробовал, но он по-прежнему отображает то же самое. Я не думаю, что это проблема с CSS.

Ответ №2:

Проблема в том, что вы вызываете метод hasChildNodes() для объекта jQuery? Я не уверен, каким должен быть $(«reviewSheet»), но перенос строки в $() делает ее объектом jQuery, который, как я считаю, не будет работать с обычными методами javascript. Если «reviewSheet» является идентификатором элемента, вы могли бы сделать что-то вроде

 node = document.getElementById('reviewSheet');
  

затем вы можете перейти в цикл while.

 while (node.hasChildNodes()) {
 //the rest of your code here
}
  

О, также вам нужно поставить скобку после функции hasChildNodes(), чтобы вернуть логическое значение.