2015-10-05 3 views
-4

У меня есть этот код (TH мой заголовок таблицы DOM-элемент):Javascript appendChild дважды добавляет элемент в DOM?

var typeIndicator = document.createElement('span'); 
typeIndicator.innerText = "A"; 
TH.appendChild(typeIndicator); 

Что происходит, он добавляет 2 <span> элементы вместо одного. У кого-то была эта проблема раньше?

+0

Проверьте код, который использует тот, который вы указали; здесь нет ничего плохого. – raina77ow

+0

Это не полный код, добавьте полный код – Tushar

+1

Как называется этот snipplet кода. Проблема в другом месте. Я предполагаю, что вы каким-то образом связали обработчик событий несколько раз. – epascarello

ответ

1

В большинстве случаев двойное или множественное инициирование событий означает, что где-то в вашем коде вы назначаете один и тот же прослушиватель событий более одного раза.

Сначала проверьте свои циклы (если они есть), то я могу посоветовать вам поставить оператор debugger; чуть выше вашего фрагмента и отладить поток программы с помощью инструментов разработчика браузера.

P.S .: Я бы прокомментировал вместо ответа, если бы у меня была достаточно репутации. Если бы вы могли добавить какой-то контекст к вашему фрагменту (например, еще один закрытый код или даже попытаться воспроизвести вашу проблему в jsFiddle), я могу расширить свой ответ.

+0

Слушайте этот дож –

+0

Благодарим за быстрый ответ! Я нашел проблему: функция вызывается дважды :(Теперь я ищу способ проверить, имеет ли узел TH дочерний тип «span», чтобы поставить дополнительную проверку перед выполнением кода. – bitstream

+0

@bitstream I может перенаправить вас к этому вопросу на SO: [Как проверить, существует ли элемент в видимой DOM?] (http://stackoverflow.com/questions/5629684/how-to-check-if-element-exists-in-the -visible-dom), но я бы посоветовал вам рассмотреть возможность использования фреймворка вроде jQuery, если у вас нет каких-либо конкретных требований к вашему проекту. – LaXiS