2010-02-10 14 views
23

गिनती है मुझे यकीन है कि यह आसान है लेकिन मुझे नहीं पता कि यह कैसे करना है। मैं अपने एचटीएमएल पेज में डीओएम तत्वों की मात्रा कैसे गिन सकता हूं? मैं इसे एक उपयोगकर्ता सूची या बुकमार्कलेट में करना चाहता था लेकिन मुझे नहीं पता कि कैसे शुरू किया जाए! Element नोड्स के लिएफ़ायरफ़ॉक्स या जावास्क्रिप्ट, डीओएम

+1

क्या आप डीओएम नोड्स या डोम नोड्स के बारे में जानना चाहते हैं जो HTML तत्व हैं? डोम में टेक्स्ट, टिप्पणियां और विशेषताओं जैसे नोड्स जैसी चीजें शामिल हैं। – edeverett

उत्तर

60

उपयोग करें:

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 कॉल करने के लिए है।

+0

iframes के अंदर तत्वों की संख्या जोड़ने का कोई तरीका है? – corretge

+0

@corretge यदि आपके पास 'contentDocument' तक पहुंच है तो यह संभव होगा। बस 'document.getElementsByTagName ("*")' के साथ प्राप्त तत्वों को पुन: सक्रिय करें और उन्हें 1 के रूप में गिनें और प्रत्येक 'iframe' तत्व नोड ('tagName ===' IFRAME'') के लिए 'सामग्री' दस्तावेज़ में तत्वों की संख्या जोड़ें इसके बजाए – Gumbo

+0

बहुत बहुत धन्यवाद! मेरे पास एक और 'छोटी' समस्या है: डोमेन, प्रोटोकॉल और बंदरगाहों का मिलान होना चाहिए। सामान्य :) – corretge

3

// आप एक ही विधि का उपयोग करें, प्रत्येक टैग की संख्या प्राप्त करने के लिए अगर यह मायने रखती है

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

जावास्क्रिप्ट में आप कर सकते हैं

document.getElementsByTagName("*").length 

jQuery में आप

jQuery('*').length 
कर सकते हैं
संबंधित मुद्दे