2015-02-05 3 views
2

Привет, мне нужно посчитать вложенные divs с заданным именем класса. Например:Подсчитайте вложенные divs в JavaScript

<div id = "divA"> 
    <div class = "anotherName"></div> 
    <div class = "toBeCounted"></div> 
    <div class = "someName"></div> 
    <div class = "toBeCounted"></div> 
    <div class = "toBeCounted"></div> 
    <div class = ""></div> 
</div> 
<div id = "divB"> 
    <div class = ""></div> 
    <div class = "toBeCounted"></div> 
    <div class = ""></div> 
    <div class = "toBeCounted"></div> 
</div> 

Так что, если я хочу считать «toBeCounted» Я хотел бы получить 3 для DIVA и 2 для DIVB.

ответ

6

Вы можете использовать .querySelectorAll() и проверьте длину результата:

var divAcount = document.querySelectorAll("#divA > .toBeCounted").length; 

> отношение настаивает, что .toBeCounted элементы являются непосредственными детьми divA. Если это не то, что вы хотите, и любойtoBeCounted div в пределах divA должен рассчитывать, вы просто не учитываете >.

+0

Это предполагает, что OP не нацелен на IE-браузеры <8 (и, надеюсь, это не так) –

+1

@ElGuapo да, это правда - все это часть моего проекта, чтобы IE8 ушел, убедив мир, что он может " возможно, будет реальным – Pointy

+0

HAHAHAHAHAHAHAHAHAHAHAHAHA –

1

С Jquery это может быть легко достигнуто с помощью

var countA = $("#divA .toBeCounted").length; 
var countB = $("#divB .toBeCounted").length; 
1

попробовать этот Чистый JavaScript код

var countinDivA = document.getElementById("divA").getElementsByClassName("toBeCounted").length; 
var countinDivB = document.getElementById("divB").getElementsByClassName("toBeCounted").length; 
1

Если вы не знаете корочки родителей раньше времени, это может оказаться полезно:

var parents = [], 
    counted = document.getElementsByClassName("toBeCounted"); 

for (var i=0; i < counted.length; i++) { 
    var id = counted[i].parentNode.id; 
    if (!parents[id]) parents[id] = 1 
    else parents[id]++; 
} 

[ divA: 3, divB: 2 ] 
Смежные вопросы