我想做一个class名称列表放到数组中去,里面没有空元素和重复项,请问怎么做,下面的代码有缺陷,请高手帮忙改改。
<script type="text/javascript" src="http://localhost/leb/auto/js/jquery-latest.js"></script>
<script type="text/javascript">
function output_css(){
var css_sheet=[];
for(var i in $(".page *")){
var css_name=$(".page *")[i].className;
if(css_name!=""){
css_sheet.push(css_name);
}
}
alert(css_sheet);
}
$(function(){
output_css(); //输出的结构很多“,,,,,,”空元素。
})
</script>
<body>
<div class="page">
<div class="head">
<div class="line">
<div class="mod logo" >
<div class="inner">
<div class="hd ">
<h3>logo</h3>
</div>
<div class="bd li li_24 li_h24">
<ul>
<li><a href="#">测试</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="line"></div>
<div class="line"></div>
</div>
<div class="body">
.....
</div>
<div class="foot">
.....
</div>
</div>
</body>

解决方案 »

  1.   

    不懂jquery, 用javascript来积分<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <body>
        <div class="page">
            <div class="head">
                <div class="line">
                    <div class="mod logo" >
                        <div class="inner">
                            <div class="hd ">
                                <h3>logo</h3>
                            </div>
                            <div class="bd li li_24 li_h24">
                                <ul>
                                    <li><a href="#">测试</a></li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="line"></div>
                <div class="line"></div>
            </div>
            <div class="body">
                .....
            </div>
            <div class="foot">
                .....
            </div>
        </div>
        
    <script language="javascript">
    Array.prototype.unique =
      function() {
        var a = [];
        var l = this.length;
        for(var i=0; i<l; i++) {
          for(var j=i+1; j<l; j++) {
            // If this[i] is found later in the array
            if (this[i] === this[j])
              j = ++i;
          }
          a.push(this[i]);
        }
        return a;
      };
       var divs = document.getElementsByTagName("div");
       var classname_str = "";
        for( i in divs){
           classname_str +=  divs.item(i).className + " ";
        }
        classname_str = classname_str.replace("/\s\s+/", " ");
        var classname_array = classname_str.split(" ");
        classname_array.splice(classname_array.length -1, 1);
        alert(classname_array.unique())
        
    </script>
    </body>
    </html>
      

  2.   


    <script type="text/javascript">
    var classList = [];
    $("*").each(function(idx){
    var curClass = $(this).attr('class');
    if(typeof(curClass) != 'undefined'){
    if(!(curClass in classList)){
    classList[classList.length] = curClass;
    }
    }
    }); alert(classList);
    </script>
      

  3.   


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

  4.   

    组合各位的意见,自己写了一个,复杂了点<script type="text/javascript">
    var class_sheet=[];
    function output_css(){
    var classList = "";
    var classList2 = "";
    var temp_array=[];
    $(".page *").each(function(i){
    var curClass = $(this).attr('class').replace(/(^\s)|(\s$)/,"");
    classList=classList+" "+curClass;
    temp_array=classList.split(" ");
    for (var i in temp_array){
    if((classList2.indexOf(temp_array[i]+" "))==-1){
    classList2=classList2+temp_array[i]+" ";
    }
    }
    });
    classList2=classList2.replace(/(^\s)|(\s$)/g, "");
    class_sheet=classList2.split(" ");
    }
    $(function(){
    output_css();
    })
    </script>
      

  5.   


    有些元素可能没有class属性,就不用判断了,把$(".page *")改成$(".page *[class]")可能更好点吧