分析一下:前两种方法有什么区别?还是一样?

来源:10-1 编程挑战

1小时先生

2016-09-08 17:13

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>实践题 - 选项卡</title>
    <style type="text/css">
     /* CSS样式制作 */  
        *{margin:0;padding:0;font:normal 14px "微软雅黑";color:black;}
        ul{list-style-type:none;}
        a{text-decoration:none;}
        #content{
            width:300px;
            height:200px;
            margin:20px auto;   
        }
        #list{
            border-bottom:2px solid red;
            height:32px;
        }
        #list li{
            display:inline-block;
            width:60px;
            line-height:30px;
            text-align:center;
            border:1px solid #999;
            border-bottom:none;
            margin-left:5px;  
        }
        #list li:hover{
            cursor:pointer;
        }
        #list li.active{
            border-top:2px solid red;
            border-bottom:2px solid #FFFFFF;
        }
        #content div{
            border:1px solid #7396BB;
            border-top:none;
        }
        #content div li{
            height:30px;
            line-height:30px;
            text-indent:8px;
        }
        .show{
            display:block;
        }
        .hide{
            display:none;
        }
    </style>
    <script type="text/javascript">    
    // JS实现选项卡切换
    window.onload = function()
    {
        var oList = document.getElementById("list");
        var aLi = oList.getElementsByTagName("li");
        var oDiv = document.getElementById("content");
        var aDiv = oDiv.getElementsByTagName("div");
        for(var i=0;i<aLi.length;i++)
        {
            aLi[i].index = i;
            //方法一:鼠标移动触发事件第一种方法:
            
            aLi[i].onmouseover = function()
            {
                for(var i=0;i<aLi.length;i++)
                {
                    aLi[i].className = "";
                }
                this.className = "active";
                for(var j=0;j<aDiv.length;j++)
                {
                   aDiv[j].className = "hide"; 
                }
                aDiv[this.index].className = "show";
            }
            
            //方法二:鼠标触发事件第二种方法:
            /*
            aLi[i].onmouseover = function()
            {
                for(var i=0;i<aLi.length;i++)
                {
                    aLi[i].className = "";
                    aDiv[i].className = "hide";
                }
                this.className = "active";
                aDiv[this.index].className = "show";
            }
            */
            //方法三:鼠标点击触发事件
            /*aLi[i].onclick = function()
            {
                for(var i=0;i<aLi.length;i++)
                {
                    aLi[i].className = "";
                    aDiv[i].className = "hide";
                }
                this.className = "active";
                aDiv[this.index].className = "";
            }*/
        }
    }
    </script>
</head>
<body>
<!-- HTML页面布局 -->
    <div id="content">
        <ul id="list">
            <li>房产</li>
            <li>家居</li>
            <li>二手房</li>
        </ul>
        <div>
            <ul>
                <li><a href="javascript:;">275万购昌平邻铁三居 总价20万买一居</a></li>
                <li><a href="javascript:;">200万内购五环三居 140万安家东三环</a></li>
                <li><a href="javascript:;">北京首现零首付楼盘 53万购东5环50平</a></li>
                <li><a href="javascript:;">京楼盘直降5000 中信府 公园楼王现房</a></li>
            </ul>
        </div>
        <div>
            <ul>
                <li><a href="javascript:;">40平出租屋大改造 美少女的混搭小窝</a></li>
                <li><a href="javascript:;">经典清新简欧爱家 90平老房焕发新生</a></li>
                <li><a href="javascript:;">新中式的酷色温情 66平撞色活泼家居</a></li>
                <li><a href="javascript:;">瓷砖就像选好老婆 卫生间烟道的设计</a></li>
            </ul>
        </div>
        <div>
            <ul>
                <li><a href="javascript:;">通州豪华3居260万 二环稀缺2居250w甩</a></li>
                <li><a href="javascript:;">西3环通透2居290万 130万2居限量抢购</a></li>
                <li><a href="javascript:;">黄城根小学学区仅260万 121平70万抛!</a></li>
                <li><a href="javascript:;">独家别墅280万 苏州桥2居优惠价248万</a></li>
            </ul>
        </div>
    </div>

 
</body>
</html>


写回答 关注

2回答

  • 小丑鱼yang
    2016-09-10 13:38:26
    已采纳

    因为他们的值都是三,循环的次数都是三次,方法二中的aDiv[i].className = "hide";放在方法一的第一个for循环的范围里(for(var i=0;i<aLi.length;i++))或者(for(var j=0;j<aDiv.length;j++)的范围里都是同样的,因为他们的循环次数都为三次,序号也是相同的,放在哪一个都是可以实现的,主要是他们for循环的i值,0,1,2这样子。

    1小时先生

    明白

    2016-09-10 20:22:41

    共 1 条回复 >

  • 1小时先生
    2016-09-08 17:19:01

    主要是想知道:方法一中,那个for循环的范围是分,for(var i=0;i<aLi.length;i++)和for(var j=0;j<aDiv.length;j++),而方法二中for循环的范围为:for(var i=0;i<aLi.length;i++),然而,为什么当方法二中的aDiv[i].className = "hide";放在方法一的第一个for循环的范围里(for(var i=0;i<aLi.length;i++)),而不是(for(var j=0;j<aDiv.length;j++)的范围里却依然可以实现啊?

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468781 学习 · 22507 问题

查看课程

相似问题