• 用js制作选项卡


    选项卡在网页中十分常见,因此学习js时选项卡是一个不能绕过的东西。

    下面是一个简单的选项卡。

    在这其中,像我这样的新学者就因为异步卡在13行一直无法理解为什么13行需要aBtn[i].ind=i;  而不能在下面aDiv【i】这样直接使用。

    首先可以证明一下如果aBtn.onclick=function()函数中插入 alert(i);弹窗出来的结果始终是i=4;因为在for循环中有函数,函数和for循环不能同步进行,在触发事件执行函数时,for循环已经完成了,此时i为最大值4,这个就是异步。所以需要重新定义按钮的索引。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script>
            window.onload = function(){
                var aBtn = document.getElementsByTagName('button');
                var aDiv =document.getElementsByTagName('div');
                for(var i = 0; i < aBtn.length;i++){
                    //给每个按钮绑定一个索引属性  第一个按钮ind 为0  第二个按钮 ind 为1. 第二个按钮ind为2
                    aBtn[i].ind = i;
                    alert(i);
                    aBtn[i].onclick = function(){
                        for(var j = 0;j < aBtn.length;j++){
                            //将所有div 先隐藏 
                            aDiv[j].style.display = 'none';
                            //所有按钮背景颜色先去掉
                            aBtn[j].style.background = '';
                        }
                        //在把对应的div显示 和按钮的背景变蓝
                        //this就是你点击哪个按钮 this就是那个按钮 上面为每一按钮都绑定了一个ind属性 this.ind就是你点击哪个按钮就是指哪个按钮的ind属性  上面说了第一个按钮ind 为0  第二个按钮ind为1 。。。。
                        this.style.background = 'blue';
                        aDiv[this.ind].style.display = 'block';
                    }
                }
            }
        </script>
        <style>
            div{
                 150px;
                height: 150px;
                border: 1px solid black;
                display: none;
            }
        </style>
    </head>
    <body>
        <button style="background:blue;">按钮1</button>
        <button>按钮2</button>
        <button>按钮3</button>
        <button>按钮4</button>
        <div style="display:block;">1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
    </body>
    </html>
  • 相关阅读:
    前端中不同页面之间传递参数的几种方式
    js中的闭包内存图
    【JavaScript基础】js中关于声明提前的几个误区
    【面试】前端面试题
    js继承的几种方式
    原生Ajax实现异步交互
    git基本使用
    一个简单的SSM框架实例(使用IDEA)
    高安全性的JavaScript
    高性能的JavaScript
  • 原文地址:https://www.cnblogs.com/momomiji/p/7594055.html
Copyright © 2020-2023  润新知