元素操作练习(排他思想,隔行换色,页面换肤,Tab栏切换)

1.排他思想

先排除其他的样式,再设置自己的样式

<body>
  <button>按钮</button>
  <button>按钮</button>
  <button>按钮</button>
  <button>按钮</button>
  <button>按钮</button>
  <button>按钮</button>
  <button>按钮</button>
  <button>按钮</button>
  <script>
    //1.获取元素
    var btns = document.getElementsByTagName('button');
    //2.遍历元素并注册事件
    for (var i = 0; i < btns.length; i++) {
      //3.注册事件
      btns[i].onclick = function () {
        //4.去掉所有背景颜色
        for (var i = 0; i < btns.length; i++) {
          btns[i].style.backgroundColor = '';
        }
        //5.设置当前元素背景颜色
        this.style.backgroundColor = 'green';
      }
    }
  </script>

2.页面换肤案例

 

<style>
    ul {
      width: 850px;
      height: 200px;
      margin: 0 auto;
      /* background-color: pink; */
    }

    ul li {
      list-style: none;
      margin-right: 2px;
      width: 200px;
      height: 200px;
      float: left;

    }

    ul li img {
      width: 200px;
      height: 200px;
    }

    body {
      background: url('https://t7.baidu.com/it/u=2604797219,1573897854&fm=193&f=GIF') no-repeat center top;
      background-size: cover;
      background-attachment: fixed;
    }
  </style>
  <ul class="huanfu">
    <li><img src="https://t7.baidu.com/it/u=2604797219,1573897854&fm=193&f=GIF" alt=""></li>
    <li><img src="https://img1.baidu.com/it/u=1136483216,1165182530&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=355" alt="">
    </li>
    <li><img src="https://img1.baidu.com/it/u=2310170655,486191485&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=281" alt="">
    </li>
    <li><img src="https://img2.baidu.com/it/u=348212466,3548643328&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500" alt="">
    </li>
  </ul>

 

<script>
    var pics = document.querySelector('.huanfu').querySelectorAll('img')
    for (var i = 0; i < pics.length; i++) {
      pics[i].onclick = function () {
        document.body.style.backgroundImage = 'url(' + this.src + ')';
      }
    }
  </script>

 3.表格隔行换色

 

  <style>
    table {
      width: 100%;
      border: 1px solid black;
    }

    .bg {
      background-color: skyblue;
    }
  </style>
 <table>
    <thead>
      <td>序号</td>
      <td>姓名</td>
      <td>性别</td>
    </thead>
    <tbody>
      <tr>
        <td>0111</td>
        <td>aaaa</td>
        <td>女</td>
      </tr>
      <tr>
        <td>01</td>
        <td>aaaa</td>
        <td>女</td>
      </tr>
      <tr>
        <td>01</td>
        <td>aaaa</td>
        <td>女</td>
      </tr>
      <tr>
        <td>01</td>
        <td>aaaa</td>
        <td>女</td>
      </tr>

    </tbody>

  </table>

  <script>
    //1.获取元素
    var trs = document.querySelector('tbody').querySelectorAll('tr');
    for (var i = 0; i < trs.length; i++) {
      trs[i].onmouseover = function () {
        this.className = 'bg';
      }
      trs[i].onmouseout = function () {
        this.className = '';
      }
    }
  </script>

4.全选和取消全选

 

<style>
    table {
      border: 1px solid grey;
      width: 100%;
      margin: 0 auto;
    }

    thead {
      background-color: skyblue;
    }

    tbody {
      background-color: lightgrey;
    }
  </style>
<table>
    <thead>
      <td><input type="checkbox" id="checkboxAll"></td>
      <td>商品</td>
      <td>价钱</td>
    </thead>
    <tbody id="checkboxEach">
      <tr>
        <td><input type="checkbox"></td>
        <td>iPhone8</td>
        <td>8000</td>
      </tr>
      <tr>
        <td><input type="checkbox"></td>
        <td>iPhone8</td>
        <td>8000</td>
      </tr>
      <tr>
        <td><input type="checkbox"></td>
        <td>iPhone8</td>
        <td>8000</td>
      </tr>
      <tr>
        <td><input type="checkbox"></td>
        <td>iPhone8</td>
        <td>8000</td>
      </tr>
    </tbody>
  </table>

  <script>
    // 1.获取元素
    var checkAll = document.getElementById('checkboxAll');
    var checkEach = document.getElementById('checkboxEach').querySelectorAll('input');
    //选中全选,其余的每一项都被选中
    checkAll.onclick = function () {
      console.log(this.checked);
      for (var i = 0; i < checkEach.length; i++) {
        checkEach[i].checked = this.checked;
      }
    }
    //每一项都被选中时,选中全选
    for (var i = 0; i < checkEach.length; i++) {
      //为每一个子复选框绑定事件
      checkEach[i].onclick = function () {
        var flag = true;
        //每次点击都要循环检查所有按钮是选中
        for (var i = 0; i < checkEach.length; i++) {
          if (!checkEach[i].checked) {
            flag = false;
          }
        }
        checkAll.checked = flag;
      }
    }
  </script>

5.Tab栏切换案例

初始阶段,将所有item隐藏起来,以便添加点击事件,只有点击了li,相应的item才会出现

 <style>
    ul li {
      list-style: none;
      float: left;
    }

    .tab {
      width: 800px;
      height: 400px;
      background-color: lightblue;
      margin: 0 auto;
    }

    .tab_title {
      width: 100%;
      height: 40px;
      background-color: orange;
    }

    .tab_title ul li {
      height: 40px;
      width: 150px;
      border-right: 2px solid white;
      text-align: center;
      line-height: 40px;
      font-size: 20px;
      font-weight: bold;
      color: #fff;
    }

    .tab_title ul li:hover {
      background-color: red;
    }

    .tab_content {
      width: 100%;
      height: 360px;
      background-color: pink;
    }

    .item {
      display: none;
    }
  </style>

 最初只显示商品介绍页面,将行内样式改为block

 <div class="tab">
    <div class="tab_title">
      <ul>
        <li>商品介绍</li>
        <li>规格与包装</li>
        <li>售后保障</li>
        <li>商品评价</li>
        <li>手机社区</li>
      </ul>
    </div>
    <div class="tab_content">
//最初只显示商品介绍页面
      <div class="item" style="display:block;">商品介绍模块内容</div>
      <div class="item">规格与包装模块内容</div>
      <div class="item">售后保障模块内容</div>
      <div class="item">商品评价模块内容</div>
      <div class="item">手机社区模块内容</div>
    </div>
  </div>

js主要用到获取属性以及排他思想

<script>
    var tab_title = document.getElementsByClassName('tab_title');
    var lis = document.querySelectorAll('li');
    var items = document.getElementsByClassName('item');
    for (var i = 0; i < lis.length; i++) {
//为每个li添加index属性
      lis[i].setAttribute('index', i);
//为每个li添加点击事件
      lis[i].onclick = function () {
//点击后先获取li的index属性,便于与item对应
        var index = this.getAttribute('index');
        console.log(index);
//排他思想,起初隐藏所有的item
        for (var i = 0; i < items.length; i++) {
          items[i].style.display = 'none';
        }
//只有与li的index属性对应的一个item才会显示出来
        items[index].style.display = 'block';
      }

    }

  </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值