• Dom--选项卡的实现


     一、写出Html基本的页面(此时并不能实现相应功能)

    1.写出页面元素 

    1. "container">
    2. <ul id="btn-box">
    3. <li class="btn active">事实li>
    4. <li class="btn">新闻li>
    5. <li class="btn">体育li>
    6. ul>
    7. <div id="content">
    8. <div class="list active">事实内容div>
    9. <div class="list">新闻内容div>
    10. <div class="list">体育内容div>
    11. div>
  • 页面展示如下,还没有样式

     

    2.写出页面的初始样式以及点击进去的样式 ,其中含有active的类选择器的样式是点击以后的样式

    现在的初始界面如下 

    到这里都比较简单,不多进行讲解

     

    二、js代码--功能的实现

     1.首先需要获取到两个类的元素,通过document下的方法进行获取然后分别赋值给btns和list

    1. var btns = document.getElementsByClassName('btn');
    2. var list = document.getElementsByClassName('list');

    2. 由于通过类名字取到的元素是一个数组,所以我们绑定点击事件需要用循环来实现,我们想让点击的按钮为active样式,那么我们先默认阿让所有按钮的都为正常样式(不为active的普通样式),同样我们想让对应的文本框输出对应的内容,那我们默认让其都先隐藏掉(list类);

    1. for(var i=0; ilength; i++){
    2. btns[i].onclick = function(){
    3. for(var j=0; j< btns.length; j++){
    4. btns[j].className = "btn";
    5. list[j].className = "list"
    6. }
    7. }
    8. }

    3.到这里我们所有的按钮都为默认样式,文本框内容都隐藏掉了;然后我们给对应的按钮赋给他active类,给对应的文本标签active类 

    解决第一步很好解决,可以通过this.className直接更改点击的按钮的样式;

    但是第二步我们是否也可以用this来进行操作呢?我们通过list.[this].className="list active"进行试验,并不能实现功能,点击其他按钮,文本框中不会显示文字,我们需要找到他的索引

    我们可以通过i来代替索引值来绑定吗?同样不行,因为如果用i进行绑定,i最后的值会是btns.length-1,不是其索引值,

    我们需要在btns中新定义一个属性取名index如下边定义,当点击的时候,在当前循环把其赋值给index属性,我们可以通过this来取到当前点击的按钮的索引值然后来赋值给list

    1. for(var i=0; ilength; i++){
    2. btns[i].index = i;
    3. btns[i].onclick = function(){
    4. for(var j=0; j< btns.length; j++){
    5. btns[j].className = "btn";
    6. list[j].className = "list"
    7. }
    8. this.className = "btn active"
    9. // console.log(this.index);
    10. list[this.index].className = "list active";
    11. }
    12. }

    然后代码功能就实现了,明天四六级,晚安大家》__________——《

  • 相关阅读:
    PinnedSectionItemDecoration - 一个强大的粘性标签库
    Docker 之 高级篇
    设置docker启动项目
    Perl文件锁机制:守护你的数据安全
    DEEC算法附Matlab代码
    JAVA的学习日记
    Navicat Premium 16.X--不错的数据库工具
    nfs服务器之间实现目录共享
    备战数学建模47-数模常规算法之图论(攻坚站12)
    【图像边缘检测】基于matlab自适应阈值的八方向和四方向sobel图像边缘检测【含Matlab源码 2058期】
  • 原文地址:https://blog.csdn.net/m0_72694993/article/details/126870331