zoukankan      html  css  js  c++  java
  • 节点操作案例3-菜单案例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            #menu ul li {
                list-style-type: none;
                width: 80px;
                height: 30px;
                line-height: 30px;
                background-color:beige;
                text-align: center;
                float: left;
                margin-left: 5px;
            }
    
            #menu ul li.current {
                background-color: burlywood;
            }
    
            #menu ul li a {
                text-decoration: none;
            }
        </style>
    </head>
    <body>
        <div id="menu">
            <ul>
                <li class="current"><a href="javascript:void(0)">首页</a></li>
                <li><a href="javascript:undefined">播客</a></li>
                <li><a href="javascript:void(0)">博客</a></li>
                <li><a href="javascript:void(0)">相册</a></li>
                <li><a href="javascript:void(0)">关于</a></li>
                <li><a href="javascript:void(0)">帮助</a></li>
            </ul>
        </div>
    
        <script src="common.js"></script>
        <script>
          // void 是运算符   
          // 执行void后面的表达式,并始终返回undefined
          
          var menu = my$('menu');
          // 获取menu中的ul
          var ul = getFirstElementChild(menu);
    
          for (var i = 0; i < ul.children.length; i++) {
            var li = ul.children[i];
            // 获取li中的a标签
            var link = getFirstElementChild(li);
            // 注意:此时是把函数赋给onclick 而不是函数的调用
            link.onclick = linkClick;
          }
    
          function linkClick() {
             // 所有的li取消高亮显示 
             for (var i = 0; i < ul.children.length; i++) {
               var li = ul.children[i];
               li.className = '';
             }
    
            // 让当前a标签所在的li高亮显示
            // 
            // this是当前点击的a标签对应的元素
            this.parentNode.className = 'current';
    
            // 取消后续内容的执行
            return false;
          }
    
          // ele.firstChild  
          // ele.firstElementChild
    
        </script>
    </body>
    </html>

    common中的内容

    function my$(id) {
      return document.getElementById(id);
    }
    
    // 处理浏览器兼容性
    // 获取第一个子元素
    function getFirstElementChild(element) {
        var node, nodes = element.childNodes, i = 0;
        while (node = nodes[i++]) {
            if (node.nodeType === 1) {
                return node;
            }
        }
        return null;
    }
    
    // 处理浏览器兼容性
    // 获取下一个兄弟元素
     function getNextElementSibling(element) {
        var el = element;
        while (el = el.nextSibling) {
          if (el.nodeType === 1) {
              return el;
          }
        }
        return null;
      }
    
    
    // 处理innerText和textContent的兼容性问题
    // 设置标签之间的内容
    function setInnerText(element, content) {
      // 判断当前浏览器是否支持 innerText
      if (typeof element.innerText === 'string') {
        element.innerText = content;
      } else {
        element.textContent = content;
      }
    }
  • 相关阅读:
    c语言几个字符串处理函数的简单实现
    各种类型排序的实现及比较
    随机洗牌算法Knuth Shuffle和错排公式
    两个栈实现队列
    面试杂题
    面试题——栈的压入、弹出顺序
    Codeforces 455A. Boredom
    PAT A1049. Counting Ones (30)
    Codeforces 895B. XK Segments
    Codeforces 282C. XOR and OR
  • 原文地址:https://www.cnblogs.com/jiumen/p/11411448.html
Copyright © 2011-2022 走看看