JS 闭包的排他性选择

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title></title>

  <style>

    li {

      background-color: #ccc;

      border: 1px solid #000;

      cursor: pointer;

    }

    .current {

      background-color: orangered;

    }

  </style>

</head>

<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js"></script>

<body>

  <button>点击猜猜有什么10</button>

  <ul>

    <li class="current"></li>

    <li></li>

    <li></li>

    <li></li>

    <li></li>

    <li></li>

    <li></li>

    <li></li>

    <li></li>

    <li></li>

  </ul>

  <script>

    $('button').click(function (e) {

      var color = ["blue", "purple", "pink", "yellow", "green", "red", '#008c8c', 'white']

      e.preventDefault();

      for (let i = 0; i < 10000; i++) {

        var mli = $(`<li>${i+1}</li>`)

        //0-7

        mli.css('color', color[Math.floor(Math.random() * 8)]);

        mli.appendTo($('ul'))

      }

      a();

      //b();

    });


 

    function b() {

      var allLis = document.getElementsByTagName("li");

      for (var i = 0; i < allLis.length; i++) {

        allLis[i].onmouseover = function () {

          for (var j = 0; j < allLis.length; j++) {

            allLis[j].className = "";

          }

          console.log(this)

          this.className = "current";

        }

      }

    }

    function a() {

      var allLis = document.getElementsByTagName("li");

      var lastOne = 0;

      for (var i = 0; i < allLis.length; i++) {

        (function (index) {

          console.log(index);

          allLis[index].onmouseover = function () {

            // 清除

            // console.log("-----",lastOne);

            allLis[lastOne].className = "";

            // 设置

            //console.log(this)

            this.className = "current";

            // 赋值,最后鼠标停留的地方

            lastOne = index;

          }

        })(i);

      }

    }

  </script>

</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值