WebAPI02

检测用户名和密码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    .bg {
      background-color: yellow;
    }
  </style>
</head>
<body>
    <input type="text" id="txtUserName"> <br>
    <input type="password" id="txtUserPassword"> <br>
    <input type="button" value=" 登 录 " id="btnLogin">
    <script>
      // 检测用户名是否是3-6位,密码是否是6-8位,如果不满足要求高亮显示文本框
      var btnLogin = document.getElementById('btnLogin');
      btnLogin.onclick = function () {
        // 检测用户名是否是3-6位,密码是否是6-8位
        var txtUserName = document.getElementById('txtUserName');
        var txtUserPassword = document.getElementById('txtUserPassword');
        //检测用户名是否是3-6位
        if (txtUserName.value.length < 3 || txtUserName.value.length > 6) {
          txtUserName.className = 'bg';
          return;
        } else {
          txtUserName.className = '';
        }
        // 密码是否是6-8位
        if (txtUserPassword.value.length < 6 || txtUserPassword.value.length > 8) {
          txtUserPassword.className = 'bg';
          return;
        } else {
          txtUserPassword.className = '';
        }
        console.log('执行登录');
      }
    </script>
</body>
</html>

搜索文本框

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    .gray {
      color: gray;
    }
    .black {
      color: black;
    }
  </style>
</head>
<body>
  <input type="text" class="gray" value="请输入搜索关键字" id="txtSearch"> 
  <input type="button" value="搜索" id="btnSearch">
  <script>
    // 当文本框获得焦点,如果文本框里的内容是  请输入搜索关键字 清空文本框,并且让字体变为黑色
    var txtSearch = document.getElementById('txtSearch');
    // 获取焦点的事件  focus
    txtSearch.onfocus = function () {
      if (this.value === '请输入搜索关键字') {
        this.value = '';
        this.className = 'black';
      }
    }
    // 当文本框失去焦点,如果文本框里的内容为空  还原文本框里的文字,并且让字体变为灰色
    // 失去焦点的事件  blur
    txtSearch.onblur = function () {
      // 判断文本框中的内容为空
      // if (this.value === '')
      if (this.value.length === 0 || this.value === '请输入搜索关键字') {
        this.value = '请输入搜索关键字';
        this.className = 'gray';
      }
    }
  </script>
</body>
</html>

全选反选

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }
        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 300px;
        }
        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
        }
        th {
            background-color: #09c;
            font: bold 16px "微软雅黑";
            color: #fff;
        }
        td {
            font: 14px "微软雅黑";
        }
        tbody tr {
            background-color: #f0f0f0;
        }
        tbody tr:hover {
            cursor: pointer;
            background-color: #fafafa;
        }
    </style>
</head>
<body>
  <div class="wrap">
      <table>
          <thead>
            <tr>
                <th>
                    <input type="checkbox" id="j_cbAll" />
                </th>
                <th>商品</th>
                <th>价钱</th>
            </tr>
          </thead>
          <tbody id="j_tb">
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPhone8</td>
                <td>8000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPad Pro</td>
                <td>5000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPad Air</td>
                <td>2000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>Apple Watch</td>
                <td>2000</td>
            </tr>
          </tbody>
      </table>
      <input type="button" value="  反 选  " id="btn">
  </div>
  <script>
     // 1 全选
     // 1.1 获取父checkbox,注册点击事件
     var j_cbAll = document.getElementById('j_cbAll');
     j_cbAll.onclick = function () {
       // 1.2 找到所有子的checkbox,让这些checkbox的状态跟父checkbox保持一致
       var j_tb = document.getElementById('j_tb');
       var inputs = j_tb.getElementsByTagName('input');
       for (var i = 0; i < inputs.length; i++) {
         var input = inputs[i];
         if (input.type === 'checkbox') {
          // 让子的checkbox的选中状态,和父checkbox的选中状态一致
           input.checked = this.checked;
         }
       }
     }
     // 2 当点击子的checkbox,如果所有的子的checkbox都被选中了,让父的checkbox也选中
     // 如果有一个子的checkbox没有被选中,父的checkbox也不被选中
     // 3 反选
  </script>
</body>
</html>

全选反选

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }
        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 300px;
        }
        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
        }
        th {
            background-color: #09c;
            font: bold 16px "微软雅黑";
            color: #fff;
        }
        td {
            font: 14px "微软雅黑";
        }
        tbody tr {
            background-color: #f0f0f0;
        }
        tbody tr:hover {
            cursor: pointer;
            background-color: #fafafa;
        }
    </style>
</head>
<body>
  <div class="wrap">
      <table>
          <thead>
            <tr>
                <th>
                    <input type="checkbox" id="j_cbAll" />
                </th>
                <th>商品</th>
                <th>价钱</th>
            </tr>
          </thead>
          <tbody id="j_tb">
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPhone8</td>
                <td>8000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPad Pro</td>
                <td>5000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPad Air</td>
                <td>2000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>Apple Watch</td>
                <td>2000</td>
            </tr>
          </tbody>
      </table>
      <input type="button" value="  反 选  " id="btn">
  </div>
  <script>
     var j_tb = document.getElementById('j_tb');
     var inputs = j_tb.getElementsByTagName('input');
     // 1 全选
     // 1.1 获取父checkbox,注册点击事件
     var j_cbAll = document.getElementById('j_cbAll');
     j_cbAll.onclick = function () {
       // 1.2 找到所有子的checkbox,让这些checkbox的状态跟父checkbox保持一致
       for (var i = 0; i < inputs.length; i++) {
         var input = inputs[i];
         if (input.type === 'checkbox') {
          // 让子的checkbox的选中状态,和父checkbox的选中状态一致
           input.checked = this.checked;
         }
       }
     }
     // 2 当点击子的checkbox,如果所有的子的checkbox都被选中了,让父的checkbox也选中
     // 如果有一个子的checkbox没有被选中,父的checkbox也不被选中     
     // 此处的循环,是遍历所有子的checkbox,注册点击事件
     for (var i = 0; i < inputs.length; i++) {
       var input = inputs[i];
       // 判断是否是checkbox
       if (input.type !== 'checkbox') {
        // 结束当前循环,继续下一次循环
         continue;
       }
       // 给子的checkbox注册点击事件
       input.onclick = function () {
         // 假设所有的子的checkbox都被选中了
         var isAllChecked = true;
         // 判断是否所有的子的checkbox都被选中了
         for (var i = 0; i < inputs.length; i++) {
           var input = inputs[i];
           if (input.type !== 'checkbox') {
             continue;
           }
           // 判断当前的所有checkbox是否都被选中
           if (!input.checked) {
             isAllChecked = false;
           }
         }
         // 设置父的checkbox的状态
         j_cbAll.checked = isAllChecked;
       }
     }
     // 判断父的checkbox的状态 封装成函数
     // 3 反选
     // 3.1 给反选按钮注册点击事件
     var btn = document.getElementById('btn');
     btn.onclick = function () {
        // 3.2 找到所有的子的checkbox,让其反选
        for (var i = 0; i < inputs.length; i++) {
          var input = inputs[i];
          // 判断是否是checkbox
          if (input.type !== 'checkbox') {
            continue;
          }
          // 让子的checkbox反选
          input.checked = !input.checked;
          // 父的checkbox
        }
     }    
  </script>
</body>
</html>

全选反选


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }
        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 300px;
        }
        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
        }
        th {
            background-color: #09c;
            font: bold 16px "微软雅黑";
            color: #fff;
        }
        td {
            font: 14px "微软雅黑";
        }
        tbody tr {
            background-color: #f0f0f0;
        }
        tbody tr:hover {
            cursor: pointer;
            background-color: #fafafa;
        }
    </style>
</head>
<body>
  <div class="wrap">
      <table>
          <thead>
            <tr>
                <th>
                    <input type="checkbox" id="j_cbAll" />
                </th>
                <th>商品</th>
                <th>价钱</th>
            </tr>
          </thead>
          <tbody id="j_tb">
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPhone8</td>
                <td>8000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPad Pro</td>
                <td>5000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>iPad Air</td>
                <td>2000</td>
            </tr>
            <tr>
                <td>
                    <input type="checkbox" />
                </td>
                <td>Apple Watch</td>
                <td>2000</td>
            </tr>
          </tbody>
      </table>
      <input type="button" value="  反 选  " id="btn">
  </div>
  <script>
     var j_tb = document.getElementById('j_tb');
     var inputs = j_tb.getElementsByTagName('input');
     // 1 全选
     // 1.1 获取父checkbox,注册点击事件
     var j_cbAll = document.getElementById('j_cbAll');
     j_cbAll.onclick = function () {
       // 1.2 找到所有子的checkbox,让这些checkbox的状态跟父checkbox保持一致
       for (var i = 0; i < inputs.length; i++) {
         var input = inputs[i];
         if (input.type === 'checkbox') {
          // 让子的checkbox的选中状态,和父checkbox的选中状态一致
           input.checked = this.checked;
         }
       }
     }
     // 2 当点击子的checkbox,如果所有的子的checkbox都被选中了,让父的checkbox也选中
     // 如果有一个子的checkbox没有被选中,父的checkbox也不被选中
     // 此处的循环,是遍历所有子的checkbox,注册点击事件
     for (var i = 0; i < inputs.length; i++) {
       var input = inputs[i];
       // 判断是否是checkbox
       if (input.type !== 'checkbox') {
        // 结束当前循环,继续下一次循环
         continue;
       }
       // 给子的checkbox注册点击事件
       input.onclick = function () {
         checkAllCheckBox();
       }
     }
     // 判断父的checkbox的状态 封装成函数
     function checkAllCheckBox() {
       // 假设所有的子的checkbox都被选中了
         var isAllChecked = true;
         // 判断是否所有的子的checkbox都被选中了
         for (var i = 0; i < inputs.length; i++) {
           var input = inputs[i];
           if (input.type !== 'checkbox') {
             continue;
           }
           // 判断当前的所有checkbox是否都被选中
           if (!input.checked) {
             isAllChecked = false;
           }
         }
         // 设置父的checkbox的状态
         j_cbAll.checked = isAllChecked;
     }
     // 3 反选
     // 3.1 给反选按钮注册点击事件
     var btn = document.getElementById('btn');
     btn.onclick = function () {
        // 3.2 找到所有的子的checkbox,让其反选
        for (var i = 0; i < inputs.length; i++) {
          var input = inputs[i];
          // 判断是否是checkbox
          if (input.type !== 'checkbox') {
            continue;
          }
          // 让子的checkbox反选
          input.checked = !input.checked;
          // 设置父的checkbox的状态
          checkAllCheckBox();
        }
     }    
  </script>
</body>
</html>

自定义属性操作

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="box" age="18" personId="1">张三</div>
  <script>
    var box = document.getElementById('box');
    // // 自有的属性
    // console.log(box.id);
    // // 自定义属性  -- 不能使用下面的方式获取到box元素对应的div标签的的自定义属性
    // console.log(box.age);
    // console.log(box.personId);
    // 获取自定义属性的值 getAttribute()
    // console.log(box.getAttribute('age'));
    // console.log(box.getAttribute('personId'));
    // 设置自定义属性
    // box.setAttribute('sex', 'male');
    // box.setAttribute('class', 'test');
    // 移除属性 
    box.removeAttribute('age');
    box.removeAttribute('id');
  </script>
</body>
</html>

样式操作

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    .cls {
      background-color: red;
    }
  </style>
</head>
<body>
  <input type="button" id="btn" value=" 点我 "> <br>
  <input type="text" id="txt">
  <script>
    // 根据id获取元素 封装成函数
    function my$(id) {
      return document.getElementById(id);
    }
    // 样式操作
    // 1 使用类样式
    // my$('btn').onclick = function () {
    //   my$('txt').className = 'cls';
    // }
    // 2 使用style
    my$('btn').onclick = function () {
      // my$('txt').style 
      var txt = my$('txt');
      // console.log(txt.style);
      // 样式属性  background-color
      // DOM中style的属性  backgroundColor
      txt.style.backgroundColor = 'red';
    }
    var person = {
      name: 'zs',
      age: 18,
      dog: {
        name: 'puppy',
        age: 2
      }
    }
    console.log(person.dog.name);
  </script>
</body>
</html>

模拟DOM结构

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="box">hello</div>
  <p id="p">world</p>
  <!-- 这是注释 -->
  <script>
    var box = document.getElementById('box');
    console.dir(box);
    // 创建一些列具有相同属性的对象,构造函数
    // 获取对象没有的属性,属性的值是undefined
    function Node(options) {
      // 设置属性的默认值
      this.className = options.className || '';
      this.id = options.id || '';
      // 跟节点相关的属性
      // 节点的名称,如果是元素的节点的话,是标签的名称
      this.nodeName = options.nodeName || '';
      // 节点的类型  如果是元素节点 1 属性节点 2  文本节点 3  数值类型
      this.nodeType = options.nodeType || 1;
      // 记录节点的值,如果是元素节点,始终是null
      this.nodeValue = options.nodeValue || null;
      // 记录子节点
      this.children = options.children || [];
    }
    // 创建html节点
    var html = new Node({
      nodeName: 'html'
    });
    // 创建head节点
    var head = new Node({
      nodeName: 'head'
    });
    // 设置html中的子节点 head
    html.children.push(head);
    // console.dir(html)
    // body 
    var body = new Node({
      nodeName: 'body'
    })
    // 设置html中的子节点 body
    html.children.push(body);
    // div
    var div = new Node({
      nodeName: 'div'
    })
    // p
    var p = new Node({
      nodeName: 'p'
    })
    // 设置body的子节点
    body.children.push(div);
    body.children.push(p);
    console.dir(html);
    // 在运行的时候,浏览器内部维护了一颗DOM树
    // 1 深刻理解DOM
    // 2 了解节点相关的属性  nodeName  nodeType  nodeValue
    // 3 了解节点的层次结构
  </script>
</body>
</html>

样式操作

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    .cls {
      width: 100px;
      height: 100px;
      background-color: red;
    }
  </style>
</head>
<body>
  <input type="button" id="btn" value=" 点我 "> <br>
  <div id="box"></div>  
  <script src="common.js"></script>
  <script>
    // 操作样式的时候,使用类样式 使用style?
    // 当设置多个样式属性的时候使用类样式方便
    // 当设置样式属性比较少的时候使用style比较方便
    // 
    // 
    // 
    // 1 类样式
    // my$('btn').onclick = function () {
    //   my$('box').className = 'cls';
    // }
    // 2 使用style
    my$('btn').onclick = function () {
      // 当设置宽度和高度的时候必须带单位,如果不带单位,有错误
      var box = my$('box');
      box.style.width = '200px';
      box.style.height = '200px';
      box.style.backgroundColor = 'red';
    }
  </script>
</body>
</html>

开关灯

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <input type="button" value="关灯" id="btn">
  <script src="common.js"></script>
  <script>
    // 是否开灯  false 关灯状态  true 开灯状态
    var isOpen = true;
    my$('btn').onclick = function () {
      if (isOpen) {
        document.body.style.backgroundColor = 'black';
        this.value = '开灯';
        isOpen = false;
      } else {
        document.body.style.backgroundColor = 'white';
        this.value = '关灯';
        isOpen = true;
      }
    }
  </script>
</body>
</html>

显示隐藏二维码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .nodeSmall {
            width: 50px;
            height: 50px;
            background: url(images/bgs.png) no-repeat -159px -51px;
            position: fixed;
            right: 10px;
            top: 40%;
        }
        .erweima {
            position: absolute;
            top: 0;
            left: -150px;
        }
        .nodeSmall a {
            display: block;
            width: 50px;
            height: 50px;
        }
        .hide {
            display: none;
        }
        .show {
            display: block;
        }
    </style>
</head>
<body>
    <div class="nodeSmall" id="node_small">
        <div class="erweima hide" id="er">
            <img src="images/456.png" alt=""/>
        </div>
    </div>
    <script src="common.js"></script>
    <script>
        // 当鼠标移入  onmouseover
        // 当鼠标移出  onmouseout
        var nodeSmall = my$('node_small');
        nodeSmall.onmouseover = function () {
            // my$('er').className = 'erweima show';
            my$('er').className = my$('er').className.replace('hide', 'show'); 
        }
        nodeSmall.onmouseout = function () {
            // my$('er').className = 'erweima hide';
            my$('er').className = my$('er').className.replace('show', 'hide');
        }
    </script>
</body>
</html>

高亮显示输入

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <input type="text"><br>
  <input type="text"><br>
  <input type="text"><br>
  <input type="text"><br>
  <input type="text"><br>
  <input type="text"><br>
  <input type="text"><br>
  <input type="text"><br>
  <input type="button" value=" 提交 ">
  <script>
    var inputs = document.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
      var input = inputs[i];
      // 判断input是否是文本框
      if (input.type !== 'text') {
        continue;
      } 
      // 让当前正在输入的文本框 高亮显示
      input.onfocus = function () {
        // 让所有的文本框去掉高亮的效果
         for (var i = 0; i < inputs.length; i++) {
           var input = inputs[i];
           if (input.type !== 'text') {
             continue;
           }
           // 去除所有文本框高亮显示
           input.style.backgroundColor = '';
         }
        // 当前文本框高亮显示
        this.style.backgroundColor = 'lightgray';   
      }
    }
  </script>
</body>
</html>

设置div的大小

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    #box {
      width: 100px;
      height: 100px;
      background-color: pink;
    }
    .cls {
      width: 200px;
      height: 200px;
      position: absolute;
      top: 100px;
      left: 100px;
      background-color: pink;
    }
  </style>
</head>
<body>
  <input type="button" value=" 点我 " id="btn">
  <br>
  <div id="box"></div>
  <script src="common.js"></script>
  <script>
    my$('btn').onclick = function () {
      var box = my$('box');
      // 改变box的大小和位置
      // 使用class
      // box.className = 'cls';
      // 
      // 使用style  设置大小和位置的时候 数字必须带单位
      box.style.width = '200px';
      box.style.height = '200px';
      box.style.position = 'absolute';
      box.style.left = '200px';
      box.style.top = '200px';
      console.log(box.style);
    }
  </script>
</body>
</html>

隔行变色和高亮显示

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <ul id="mv">
    <li>西施</li>
    <li>貂蝉</li>
    <li>王昭君</li>
    <li>杨玉环</li>
    <li>芙蓉姐姐</li>
  </ul>
  <script>
    // 1 隔行变色
    // 获取到所有的li,判断奇数行和偶数行
    var mv = document.getElementById('mv');
    var lists = mv.getElementsByTagName('li');
    for (var i = 0; i < lists.length; i++) {
      var li = lists[i];
      // 判断当前的li 是奇数行 还是偶数行
      if (i % 2 === 0) {
        // i是偶数 , 但是当前是奇数行
        // 设置奇数行的背景颜色
        li.style.backgroundColor = 'red';
      } else {
        // 设置偶数行的背景颜色
        li.style.backgroundColor = 'green';
      }
    }
    // 2 鼠标放上高亮显示
    // 
    // 2.0 给所有的li 注册事件  鼠标经过和鼠标离开的两个事件
    for (var i = 0; i < lists.length; i++) {
      var li = lists[i];
       // 2.1 鼠标放到li上,高亮显示当前的li
       var bg;
       li.onmouseover = function () {
         // 鼠标放到li上的时候,应该记录li当前的颜色
         bg = this.style.backgroundColor;
         this.style.backgroundColor = 'yellow';
       }
       // 2.2 鼠标离开li,还原原来的颜色
       li.onmouseout = function () {
         // 鼠标离开,还原原来的颜色
         this.style.backgroundColor = bg;
       }
    }
  </script>
</body>
</html>

tab切换

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {margin:0; padding: 0;}
        ul {
            list-style-type: none;
        }
        .box {
            width: 400px;
            height: 300px;
            border: 1px solid #ccc;
            margin: 100px auto;
            overflow: hidden;
        }
        .hd {
            height: 45px;
        }
        .hd span {
            display:inline-block;
            width: 90px;
            background-color: pink;
            line-height: 45px;
            text-align: center;
            cursor: pointer;
        }
        .hd span.current {
            background-color: purple;
        }
        .bd div {
            height: 255px;
            background-color: purple;
            display: none;
        }
        .bd div.current {
            display: block;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="hd" id="hd">
            <span class="current">体育</span>
            <span>娱乐</span>
            <span>新闻</span>
            <span>综合</span>
        </div>
        <div class="bd" id="bd">
            <div class="current">我是体育模块</div>
            <div>我是娱乐模块</div>
            <div>我是新闻模块</div>
            <div>我是综合模块</div>
        </div>
    </div>
    <script src="common.js"></script>
    <script>
        // 1 鼠标放到tab栏高亮显示,其它tab栏取消高亮
        var hd = my$('hd');
        var spans = hd.getElementsByTagName('span');
        for (var i = 0; i < spans.length; i++) {
            var span = spans[i];
            // 注册事件
            span.onmouseover = fn;
        }
        // 鼠标经过的事件处理函数
        function fn() {
            // 让所有的span取消高亮显示
            for (var i = 0; i < spans.length; i++) {
                var span = spans[i];
                span.className = '';
            }
            // 当前的span高亮显示
            this.className = 'current';
        }
        // var fn = function () {                
        // }   
       // 2 tab栏对应的div 显示,其它div隐藏       
    </script>
</body>
</html>

tab切换

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {margin:0; padding: 0;}
        ul {
            list-style-type: none;
        }
        .box {
            width: 400px;
            height: 300px;
            border: 1px solid #ccc;
            margin: 100px auto;
            overflow: hidden;
        }
        .hd {
            height: 45px;
        }
        .hd span {
            display:inline-block;
            width: 90px;
            background-color: pink;
            line-height: 45px;
            text-align: center;
            cursor: pointer;
        }
        .hd span.current {
            background-color: purple;
        }
        .bd div {
            height: 255px;
            background-color: purple;
            display: none;
        }
        .bd div.current {
            display: block;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="hd" id="hd">
            <span class="current">体育</span>
            <span>娱乐</span>
            <span>新闻</span>
            <span>综合</span>
        </div>
        <div class="bd" id="bd">
            <div class="current">我是体育模块</div>
            <div>我是娱乐模块</div>
            <div>我是新闻模块</div>
            <div>我是综合模块</div>
        </div>
    </div>
    <script src="common.js"></script>
    <script>
        // 1 鼠标放到tab栏高亮显示,其它tab栏取消高亮
        var hd = my$('hd');
        var spans = hd.getElementsByTagName('span');
        for (var i = 0; i < spans.length; i++) {
            var span = spans[i];
            // 通过自定义属性,记录当前span的索引
            span.setAttribute('index', i);
            // 注册事件
            span.onmouseover = fn
        }
        // 鼠标经过的事件处理函数
        function fn() {
            // 让所有的span取消高亮显示
            for (var i = 0; i < spans.length; i++) {
                var span = spans[i];
                span.className = '';
            }
            // 当前的span高亮显示
            this.className = 'current';
            // 2 tab栏对应的div 显示,其它div隐藏
            // 所有的div 隐藏
            var bd = my$('bd');
            var divs = bd.getElementsByTagName('div');
            for (var i = 0; i < divs.length; i++) {
                var div = divs[i];
                div.className = '';
            }
            // 当前span对应的div显示
            // 获取自定义属性的值
            var index = parseInt(this.getAttribute('index')) ;
            divs[index].className = 'current';    
        }
        // var fn = function () {               
        // }          
    </script>
</body>
</html>

模拟DOM

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="box">hello</div>
  <p id="p">world</p>
  <!-- 这是注释 -->
  <script>
    // 文档树
    //   节点
    //      元素节点
    //      属性节点
    //      文本节点
    //      注释节点
    // var box = document.getElementById('box');
    // console.dir(box);
    // var p = document.getElementById('p');
    // console.dir(p);
    // 
    // 
    // 创建一些列具有相同属性的对象,构造函数
    // 获取对象没有的属性,属性的值是undefined
    function Node(options) {
      // if (options.className) {
      //   this.className = options.className;
      // } else {
      //   this.className = '';
      // }
      
      // this.className = options.className ? options.className : '';
      // 设置属性的默认值
      this.className = options.className || '';
    }
    // || 布尔类型的运算符,如果有一边是true就返回true,如果两边同时为false返回false
    // || 两边也可以是其它类型,会先转换成布尔类型
    // 如果第一个 运算数 转换成布尔类型,是true ,直接返回这个运算数
    // 如果第一个 运算数 转换成布尔类型,是false,返回第二个运算数
    var o = new Node({
      // className: 'cls'
    });
    console.log(o);
  </script>
</body>
</html>

总结

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <div id="box"></div>
  <script>
    // DOM  文档对象模拟
    // 
    // 常见的DOM操作
    //    获取元素   getElementById()  getElementsByTagName()
    //    给元素注册事件    onclick   onmouseover  onmouseout  onfocus  onblur
    //    操作元素的属性
    //        非表单元素   href  title  src alt等
    //        表单元素     type  value  checked  disabled  selected
    //        公共属性     id   className style
    //        样式操作     className  style
    //        自定义属性   setAttribute()   getAttribute()   removeAttribute()
  </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值