小羊也疯狂 2018-05-04 06:53 采纳率: 100%
浏览 475
已采纳

闭包以及li标签快之间的空间处理问题

两个问题
第一个 下面这个闭包 对每个元素绑定对时候是绑定的i还是绑定的具体的数
具体一点说就是 绑定的是colors[0][i] 等我点击的时候i是多少就执行多少
还是说我绑定的时候 循环里当i=0时 我就绑定 colors[0][0] i=1时我就绑定colors[0][1]

这里不用let 用立即执行函数应该怎么写?

图片说明
第二个 为什么 中间绿色选项快速点击的时候会出现文字选择的效果
我把div弄成一行就没有了
这里应该怎么处理?
图片说明


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原生js小demo集合</title>
</head>
<style>
    body{
        background-color: lightgreen;
    }
    .container{
        width: 500px;
        margin: 20px auto;
    }
    .control{
        margin: 0 auto;
    }
    .control .button{
        display: inline-block;
        width: 20px;
        height: 20px;
        margin-right: 5px;
    }
    .control .button.red{
       background-color: red;
    }
    .control .button.red.checked{
        background-color: white;
        box-shadow: 0 0 0 6px red inset;
    }
    .control .button.green{
        background-color: green;

    }
    .control .button.green.checked{
        background-color: white;
        box-shadow: 0 0 0 6px green inset;
    }
    .control .button.black{
        background-color: black;
    }
    .control .button.black.checked{
        background-color: white;
        box-shadow: 0 0 0 6px black inset;
    }

    ul{
        margin-top: 5px;
        padding: 0;
        border:1px solid white;
        list-style-type: none;
        display: flex;
        background-color: green;
    }
    li{
        height:30px;
        line-height: 30px;
        display: inline-block;
        flex: 1;

        border-right: 1px solid white;
        text-align: center;
    }
    li:last-child{
        border-right: none;
    }
    li a{
        text-decoration: none;
        color: white;
    }
</style>
<body>
<div class="container">
    <div class="control">
        <div class="button red"></div>
        <div class="button green"></div>
        <div class="button black"></div>
    </div>
    <ul>
        <li><a href="javascript:;">新闻</a></li>
        <li><a href="javascript:;">娱乐</a></li>
        <li><a href="javascript:;">体育</a></li>
        <li><a href="javascript:;">电影</a></li>
        <li><a href="javascript:;">音乐</a></li>
        <li><a href="javascript:;">旅游</a></li>
    </ul>
</div>
<script>
    var colors = [['red','green','black'],['pink','lightgreen','lightslategrey']];
    var buttons = document.getElementsByClassName("button");
    buttons[1].classList.add('checked');
    var ul = document.getElementsByTagName('ul')[0];
    //对于每个button都要绑定一个事件,1.改变导航的背景色为button的颜色,2.改变body的背景色为button颜色的浅色
    for(let i =0;i<buttons.length;i++){
        buttons[i].addEventListener('click',function (e) {
            ul.style.backgroundColor=colors[0][i];
            document.body.style.backgroundColor=colors[1][i];
            //删除buttons的checked类,在点击元素上增加checked类
            buttons[0].classList.remove('checked');
            buttons[1].classList.remove('checked');
            buttons[2].classList.remove('checked');
            e.target.classList.add('checked');
        })
    }
</script>
</body>
</html>
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2018-05-04 10:45
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#vscode#的问题:ESP32开发板对接MQTT实现小灯泡的开关
  • ¥15 TMC2209串口模式下读取不到寄存器的值串口助手蓝色字体是发过去的消息,绿色字体是收到的消息,第二行发送读取寄存器的指令但是没有读取到寄存器的值串口助手如下图:接线如下图,如何解决?
  • ¥15 高通安卓11提取完整线刷包软件,或者优博讯dt50顺丰刷机包
  • ¥20 C,有个译码器,换了信道就跑不出原来数据
  • ¥15 MIMIC数据库安装问题
  • ¥60 基于JTag协议开发Fpga下载器上位机,哪位大🐂有偿指导?
  • ¥20 全书网Java爬取数据
  • ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
  • ¥100 微信小程序跑脚本授权的问题
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏