getElementsByTagName ('div') возвращает двойные вхождения - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть два (2) элемента div в теле.

<body><div></div><div></div></body>


var haha = document.getElementsByTagName('div');
for (var k=0; k<haha.length; k++) alert(haha[k].tagName);

это возвращает 4 вхождения, я думаю, это закрывающие теги, как я могу их опустить?

Ответы [ 4 ]

2 голосов
/ 23 июня 2015

Я столкнулся с этой проблемой из-за использования

var elements = document.getElementsByTagName('div')
for(var i in elements) {
    console.log(i) //This will print 2 x number of elements
}

вместо использования

var elements = document.getElementsByTagName('div'); 
for(var i = 0; i < elements.length; i++) {
     //Only once
}
1 голос
/ 11 ноября 2010

Отключите firebug и попробуйте снова;)

Firebug и несколько других дополнений манипулируют html-кодом.Я попробовал ваш образец и получил 3 предупреждения, которые имеют смысл префекта:

> document.getElementsByTagName('div')
[div, div, div#_firebugConsole]
0 голосов
/ 11 ноября 2010

Возможно, вам не хватает близких тегов.

<div><div> <div><div>

должно быть

<div></div> <div></div>

ура

0 голосов
/ 11 ноября 2010

Полагаю, вы неправильно закрываете свой div. Может быть, вы пропустите </div> слеш

или, может быть, вы дважды выполняете свой JavaScript

...