Firefox или JavaScript, считайте DOM - PullRequest
23 голосов
/ 10 февраля 2010

Я уверен, что это просто, но я понятия не имею, как это сделать. Как подсчитать количество элементов DOM на моей HTML-странице? Я хотел сделать это в usercript или букмарклет, но я не знаю, с чего начать!

Ответы [ 3 ]

60 голосов
/ 10 февраля 2010

Используйте это для Element узлов:

document.getElementsByTagName("*").length

Для любого узла вы можете расширить Node следующим образом:

Node.prototype.countChildNodes = function() {
  return this.hasChildNodes()
    ? Array.prototype.slice.apply(this.childNodes).map(function(el) {
        return 1 + el.countChildNodes();
      }).reduce(function(previousValue, currentValue, index, array){
        return previousValue + currentValue;
      })
    : 0;
};

Тогда все, что вам нужно сделать, это позвонить document.countChildNodes.

3 голосов
/ 10 февраля 2010

// Вы можете использовать тот же метод, чтобы получить счетчик каждого тега, если это имеет значение

  function tagcensus(pa){
    pa= pa || document;
    var O= {},
    A= [], tag, D= pa.getElementsByTagName('*');
    D= A.slice.apply(D, [0, D.length]);
    while(D.length){
        tag= D.shift().tagName.toLowerCase();
        if(!O[tag]) O[tag]= 0;
        O[tag]+= 1;
    }
    for(var p in O){
        A[A.length]= p+': '+O[p];
    }
    A.sort(function(a, b){
        a= a.split(':')[1]*1;
        b= b.split(':')[1]*1;
        return b-a;
    });
    return A.join(', ');
}

предупреждение (tagcensus ())

2 голосов
/ 04 февраля 2014

В JavaScript вы можете сделать

document.getElementsByTagName("*").length

В jQuery вы можете сделать

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