IE JavaScript проблема с разрывом или именем класса - PullRequest
3 голосов
/ 12 октября 2010

Я не совсем уверен, в чем здесь проблема, она работает с chrome и ff, но не с т. Е.

var newdiv = document.createElement("div");
newdiv.innerHTML = xhr.responseText;
el = newdiv.firstChild.nextSibling;
var next;
do{
next = addpoint.nextSibling;
if(next.className != "commentstyle golduser") break;
}while(addpoint = next);
document.getElementById("testimonialcommentlisting"+id).insertBefore(el,next);

Ошибка в этой строке document.getElementById ("testimonialcommentlisting" + id) .insertBefore(el, next);


**UPDATE**

хорошо, это странно, я провёл тест и обнаружил проблему.проблема связана с var el для chrome, а ff el является элементом div, в то время как null.

здесь возникает более странная проблема.По праву, newdiv.firstChild должен быть элементом div, но я не знаю, почему ff и chrome регистрируют его как текстовый элемент, и ясно, что мой responseText выглядит примерно так

<div>blahblah</div>

я надеюсь, что кто-то понимает, что яговорить о.

1 Ответ

1 голос
/ 12 октября 2010

Ваш цикл следует странной конструкции. Вы выбираете addpoint.nextSibling, а затем смотрите его атрибут className, и только затем проверяет, является ли узел действительным. Это означает, что на последней итерации цикла, когда next равно нулю, вы пытаетесь получить доступ к свойству className null.

while (next) {
    if (next.className != 'commentstyle golduser') break;
    next = next.nextSibling;
}

Без большего контекста из того, что окружает этот цикл, я не знаю, как вписывается addpoint. Нет необходимости просто заставлять цикл работать, хотя, если вам нужно изменить addpoint, нет причин, по которым вы не можете сделать это с помощью этой конструкции цикла.

Дело в том, что вы никогда не проверяете next.className, когда next равно нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...