#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(), чтобы вернуть логическое значение.