(7)展开闭合列表:布局overflow在列表中应用

<title>无标题文档</title>
<style type="text/css">
     dl dd/*关联选择器*/
     {
         margin:0px;
     }
     dl{
         height:16px;
         overflow:hidden;/*只保留“显示条目一”,其他隐藏*/
     }
     .open
     {
        overflow:visible; 
     }
     .close
     {
         overflow:hidden;
     }
</style>
</head>

<body>
  <script type="text/javascript">
   /*  var flag=true;

     function list()
     {
         //获取要处理的节点,dl
         var node=document.getElementsByTagName("dl")[0];

          if(flag)
          {
            node.style.overflow="visible";
            flag=false;
          }
          else
          {
              node.style.overflow="hidden";
              flag=true;
          }


     }
     */

     function list2()
     {
         //1,获取dl节点
         var node=document.getElementsByTagName("dl")[0];

         //2,设置dl的className属性值,通过判断属性值来切换
          if(node.className=="open")
              node.className="close";
          else
              node.className="open";

     }
     //list1,2都是一个列表的情况,但是实际开发,通常一个网页中含有多个列表

     function list3(index)
     {
         //这种方式中列表的位置不能调换,否则会出现展开错误列表的情况.因为Dom解析是按照列表从前到后解析的
         //不安全
         var node=document.getElementsByTagName("dl")[index];

         if(node.className=="open")
              node.className="close";
          else
              node.className="open";

     }
     function list4(node)
     {
         //alert(node.nodeName);//得到DT
         var fnode=node.parentNode;
          if(fnode.className=="open")
              fnode.className="close";
          else
              fnode.className="open";

     }

    //在多个列表下,一次只需要展开一个列表,关闭其他开启的列表
    /*思路:1,获取所有dl节点
           2,遍历这些节点,只对当前的dl进行展开或者闭合操作,其他节点,都进行闭合操作
    */
    function list5(node)
    {
        var oDlnode=node.parentNode;//获取当前的dl节点

        var collDlNodes=document.getElementsByTagName("dl");
        for(var i=0;i<collDlNodes.length;i++)
        {
            if(collDlNodes[i]==oDlnode)
            {
                if(oDlnode.className=="open")
                    oDlnode.className="close";
                else
                    oDlnode.className="open";
            }

           else
           {
            collDlNodes[i].className="close";
           }

        }




    }

  </script>

   <dl class="close">
       <dt onclick="list5(this)">显示条目一</dt>
       <dd>展示列表内容1</dd>
       <dd>展示列表内容1</dd>
       <dd>展示列表内容1</dd>
   </dl>

   <dl class="close">
       <dt onclick="list5(this)">显示条目二</dt>
       <dd>展示列表内容2</dd>
       <dd>展示列表内容2</dd>
       <dd>展示列表内容2</dd>
   </dl>

    <dl class="close">
       <dt onclick="list5(this)">显示条目三</dt>
       <dd>展示列表内容3</dd>
       <dd>展示列表内容3</dd>
       <dd>展示列表内容3</dd>
   </dl>

</body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值