How to get list of Css class use in the HTML file?

后端 未结 6 2063
太阳男子
太阳男子 2020-12-14 23:23

I need list of classes used in an html file. Is there any tool where i can get list of classes in the HTML file?

相关标签:
6条回答
  • 2020-12-15 00:05

    Pure Javascript Code will list all the unique classes.

    var lst=[];
    document.querySelectorAll("[class]").forEach( (e)=>{  
    e.getAttribute("class").split(" ").forEach( (cls)=>{if( cls.length>0 && lst.indexOf(cls)<0) lst.push(cls);}
    );
     });
    console.log(lst.sort());
    
    0 讨论(0)
  • 2020-12-15 00:10

    I know this is an old question, but got here through google so I suspect more people can get here too.

    The shortest way, using querySelectorAll and classList (which means, browser support could be an issue: IE10 for classList and IE8 for querySelectorAll ), and with duplicates, would be:

    var classes = 0, 
    elements = document.querySelectorAll('*');
    
    for (var i = 0; i < elements.length; i++) {
        classes = classes + elements[i].classList.length;        
    }
    

    I made a jsFiddle with a fallback for classList (which has the "lowest" browser support) that also counts all elements, all classes and all elements with classes if you're not using classList.

    I didn't add a unique detection though, might get to it some day.

    0 讨论(0)
  • 2020-12-15 00:20

    Take a look at Dust Me Selectors.

    It's not exactly what you are looking for, it shows a list of UNused selectors. However, I imagine you could use the inverse of the list it provides.

    Here is the link: http://www.sitepoint.com/dustmeselectors/

    0 讨论(0)
  • 2020-12-15 00:22

    this should work and it doesn't need jquery.

    var used = [];
    var elements = null;
    
    //get all elements
    if (typeof document.getElementsByTagName != 'undefined') {
        elements = document.getElementsByTagName('*');
    }
    
    if (!elements || !elements.length) {
        elements = document.all; // ie5
    }
    
    //loop over all element
    for (var i = 0; i < elements.length; i++){
    
        //loop over element's classes
        var classes = elements[i].className.split(' ');
        for (var j = 0; j < classes.length; j++) {
    
            var name = classes[j];
    
            //add if not exists
            if (name.length > 0 && used.indexOf(name) === -1) {
                used.push(name);
            }
        }
    }
    
    alert(used.join(' '));
    

    es6 version

    let used = new Set();
    let elements = document.getElementsByTagName('*');
    for (let { className = '' } of elements) {
        for (let name of className.split(' ')) {
            if (name) {
                used.add(name);
            }
        }
    }
    console.log(used.values());
    

    more functional approach

    var elements = document.getElementsByTagName('*');
    
    var unique = function (list, x) {
        if (x != "" && list.indexOf(x) === -1) {
            list.push(x);
        }
        return list;
    };
    
    var trim = function (x) { return x.trim(); };
    
    var classes = [].reduce.call(elements, function (acc, e) {
        return e.className.split(' ').map(trim).reduce(unique, acc);
    }, []);
    
    0 讨论(0)
  • 2020-12-15 00:24

    If you've got jQuery on the page, run this code:

    var classArray = [];
    $('*').each(function(){if(this.className!=""){classArray.push(this.className)}})
    

    The variable classArray will contain all the classes specified on that HTML page.

    0 讨论(0)
  • 2020-12-15 00:28

    Quickly list classes from console (ignoring 'ng-*' angular classes)

    (global => {
        // get all elements
        const elements = document.getElementsByTagName('*');
        // add only unique classes
        const unique = (list, x) => {
            x != '' && list.indexOf(x) === -1 && x.indexOf('ng-') !== 0 && list.push(x);                    
            return list;
        };
        // trim
        const trim = (x) => x.trim();
        // add to variable
        global.allClasses = [].reduce.call(elements, (acc, e) => e.className.split(' ').map(trim).reduce(unique, acc), []).sort();
        console.log(window.allClasses);
    })(window);

    0 讨论(0)
提交回复
热议问题