我要实现网页换肤的功能,但不知道为什么firefox上有错误,说$("skin").getElementsByTagName is not a function 
不知道什么原因
function $(obj) {
    return document.getElementById(obj);
}var skin = {};skin.addEvent = function () {
    var skins = $("skin").getElementsByTagName("li");
    for (i = 0; i < skins.length; i++) {
        skins[i].onclick = function () { skin.setSkin(this.id.ToString()) };
    }
}skin.setCookie = function (n) {
    var expires = new Date();
    expires.setTime(expires.getTime() + 24 * 60 * 60 * 365 * 1000);
    var flag = "Skin_Cookie=" + n;
    document.cookie = flag + ";expires=" + expires.toGMTString();
}skin.readCookie = function () {
    var skin = 0
    var mycookie = document.cookie;
    var name = "Skin_Cookie";
    var start1 = mycookie.indexOf(name + "=");
    if (start1 == -1) {
        skin = 0;
    }
    else {
        var start = mycookie.indexOf("=", start1) + 1;
        var end = mycookie.indexOf(";", start);
        if (end = -1) {
            end = mycookie.length;
        }
        var values = unescape(mycookie.substring(start, end));
        if (values != null) {
            skin = values;
        }
    }
    return skin;}skin.setSkin = function (n) {
    var skins = $("skin").getElementsByTagName("li");
    for (i = 0; i < skins.length; i++) {
        skins[i].className = "";
    }
    skin.setCookie(n);
    $("skin_" + n).className = "selected";
    $("cssfile").href = "css/main" + n + ".css";
}window.onload = function () {
    skin.setSkin(skin.readCookie());
    skin.addEvent();
}<ul id="skin">
<li id="skin_0" title="灰色">灰色</li>
<li id="skin_1" title="绿色">绿色</li>
<li id="skin_2" title="黄色">黄色</li>
<li id="skin_3" title="蓝色">蓝色</li>
<li id="skin_4" title="粉色">粉色</li>
<li id="skin_5" title="紫色">紫色</li>
</ul>

解决方案 »

  1.   

    LZ把这句话 var skins = $("skin").getElementsByTagName("li");改成var skins = $("#skin").children();
    或者 var skins=$("#skin").find("li");试试看
      

  2.   

     var skins = $("skin").childNodes;要么就直接 var skins = document.getElementsByTagName("li");1楼的是jquery, 当然更简单些,
    代码会少写很多,
      

  3.   

    只点出你的错误
    $("skin")是一个jquery对象,jQuery对象是没有getElementsByTagName方法的。
    $("skin").get(0)就是一个DOM对象,这个DOM对象就有getElementsByTagName了。
      

  4.   

    你看楼主的代码没?用Jquery了吗?晕!
      

  5.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script language="javascript" type="text/javascript">
            function GetLi() {
                var oUl = $("skin");
                var liList = oUl.getElementsByTagName("li");
                for (var i = 0; i < liList.length; i++) {
                    alert(liList[i].innerHTML);
                }
            }
            function $(obj) {return document.getElementById(obj);}
        </script>
    </head>
    <body>
        <input type="button" value="测试" onclick="GetLi()" />
        <ul id="skin">                
            <li id="skin_0" title="灰色">灰色</li>
            <li id="skin_1" title="绿色">绿色</li>
            <li id="skin_2" title="黄色">黄色</li>
            <li id="skin_3" title="蓝色">蓝色</li>
            <li id="skin_4" title="粉色">粉色</li>
            <li id="skin_5" title="紫色">紫色</li>
        </ul>
    </body>
    </html>我这儿,测试没问题!可能是你哪儿写错了!检查下!
      

  6.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=gb2312">
    <title> new document </title>
    <meta name="keywords" content="">
    <meta name="description" content="">
    <link rel="stylesheet" id="cssfile" type="text/css" />
    <script type="text/javascript">
    <!--
    function $(obj) {
        return document.getElementById(obj);
    }var skin = {};skin.addEvent = function () {
        var skins = $("skin").getElementsByTagName("li");
        for (i = 0; i < skins.length; i++) {
            skins[i].onclick = function () { skin.setSkin(this.id.toString()) };
        }
    }skin.setCookie = function (n) {
        var expires = new Date();
        expires.setTime(expires.getTime() + 24 * 60 * 60 * 365 * 1000);
        var flag = "Skin_Cookie=" + n;
        document.cookie = flag + ";expires=" + expires.toGMTString();
    }skin.readCookie = function () {
        var skin = 0
        var mycookie = document.cookie;
        var name = "Skin_Cookie";
        var start1 = mycookie.indexOf(name + "=");
        if (start1 == -1) {
            skin = 0;
        }
        else {
            var start = mycookie.indexOf("=", start1) + 1;
            var end = mycookie.indexOf(";", start);
            if (end = -1) {
                end = mycookie.length;
            }
            var values = unescape(mycookie.substring(start, end));
            if (values != null) {
                skin = values;
            }
        }
        return skin;}skin.setSkin = function (n) {
        var skins = $("skin").getElementsByTagName("li");
        for (i = 0; i < skins.length; i++) {
            skins[i].className = "";
        }
    n = n.substr(5,1);
    if (n=="") {
    n=0;
    }
        skin.setCookie(n);
        $("skin_" + n).className = "selected";
        $("cssfile").href = "css/main" + n + ".css";
    }window.onload = function () {
        skin.setSkin(skin.readCookie());
        skin.addEvent();
    }
    //-->
    </script>
    </head> <body>
    <ul id="skin">                
            <li id="skin_0" title="灰色">灰色</li>
            <li id="skin_1" title="绿色">绿色</li>
            <li id="skin_2" title="黄色">黄色</li>
            <li id="skin_3" title="蓝色">蓝色</li>
            <li id="skin_4" title="粉色">粉色</li>
            <li id="skin_5" title="紫色">紫色</li>
        </ul> </body>
    </html>
      

  7.   

    换肤的话可以参考下这个,JQuery简单的网页换肤