【问题标题】:Javascript- Nested list won't expandJavascript-嵌套列表不会扩展
【发布时间】:2013-12-12 11:04:38
【问题描述】:

好的。所以我有一个这样的列表(基本上) A) Mnfctr a a) 产品线 B) Mnfctr b b) 产品线 我希望列表展开和折叠,因为页面太大以适应高度。这是我的代码

    <script type="text/javascript">
    function toggle(id) {

    ul = "ul_" + id;
    img = "img_" + id;
    ulElement = document.getElementById(ul);
    imgElement = document.getElementById(img);
    if (ulElement){
        if (ulElement.className == 'closed'){
                ulElement.className = "open";
                imgElement.src = "images/opened.gif";
                }
                else{
                ulElement.className = "closed";
                imgElement.src = "images/closed.gif";
                }
        }
     }

      </script>

CSS

    #portslist{
      color:black;
      border: 1px solid #babec9;

    }
    #portslist ul {
        color:black;
      font-size: 12px;
      padding-left:3px;
    }
    #portslist ul li {

    }
    #portslist ul li ul {

      padding: 5px 4px 4px;
      font-size:9px;

    }
    #portslist ul li ul li{
      color:black;
      height:15px;
     margin-left:10px;
    }
    .open
    {display:block;}
    .closed
    {display:none;
    }
    li img {
      vertical-align:middle;
      cursor:pointer;
    }

HTML:

<ul class="open">
    <li id="item1"><a onlick="toggle('item1');"><img src="images/closed.gif" alt="" id="img_item1" border="0"></a> Texas Instruments 
    <ul id="ul_item1" class="closed">
      <li id="item1_1">RM4x DCAN</li>
        </ul>
  </li>
  <li> Amtel 
    <ul class="closed">
      <li>SAM7</li>
      </ul> 
  </li>
  <li>Freescale
    <ul class="closed">
      <li>HCS08</li>
      <li>HCS12</li>
      <li>HCS12X</li>
      <li>MC68xxx</li>
      <li>MCF5xxx</li>
      <li>MPC5xxx</li>
      <li>Kinetis Kxx</li>
    </ul> 
  </li> 
</ul>

非常感谢大家提前提供的帮助。

【问题讨论】:

    标签: javascript css list nested


    【解决方案1】:

    交换图像源使问题变得更加复杂。尝试使用 CSS 设置 LI 背景图像。

    .open {
        background:url(http://michaelfward.byethost7.com/images/opened.gif) no-repeat left center;
    }
    .closed {
        background:url(http://michaelfward.byethost7.com/images/closed.gif) no-repeat left center;
    }
    .closed > ul {display:none;}
    .open > ul {display:block;}
    

    然后交换父 LI 上的类。

    var toggles = document.getElementById('portslist').getElementsByTagName('li');
    for(var t in toggles){
        if(toggles[t].className == "") continue;
        toggles[t].onclick = function(){
            this.className = this.className == "closed" ? "open" : "closed";
        }
    }
    

    示例:http://jsfiddle.net/Cww29/2/

    当然,这需要放在窗口加载函数或事件监听器中。

    【讨论】:

    • 非常感谢。我是否需要将该脚本包含在我已有的脚本中?
    • 没关系。对不起,我在这里睡了三个小时,我不能忍受不弄清楚一些事情。一切顺利,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    相关资源
    最近更新 更多