• Web APIs——环境对象this以及回调函数


    一、环境对象

    环境对象:指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境

    作用:弄清楚this的指向,可以使代码更简洁

    • 函数的调用方式不同,this指代的对象也不同
    • [谁调用,this就是谁] 是判断this指向的粗略规则
    • 直接调用函数,其实相当于是window.函数,所以thi指代window
    1. <button>点击button>
    2. <script>
    3. // 每个函数里面都有this 环境对象 普通函数里面this指向的是window
    4. // function fn () {
    5. // console.log()
    6. // }
    7. // window.fn()
    8. const btn = document.querySelector('button')
    9. btn.addEventListener('click',function (){
    10. // console.log(this) // btn 对象
    11. // btn.style.color = 'red'
    12. this.style.color = 'red'
    13. })
    14. script>

     二、回调函数

    如果将函数A作为参数传递给函数B时,称函数A为回调函数

    当一个函数当做参数来传递另外一个函数的时候,这个函数就是回调函数

    把函数当做另外一个函数的参数传递,这个函数就叫回调函数

    回调函数本质函数函数,只不过把它当成参数使用

    使用匿名函数做为回调函数比较常见

    常见的使用场景:

    三、综合案例

    Tab栏切换

    需求:鼠标经过不同的选项卡,底部可以显示不同的内容

    分析:

    1. 主要核心是类的切换,设定一个当前类,可以让当前元素高亮
    2. 鼠标经过当前选项卡,先移除其余元素身上的当前类,而只给当前元素添加类
    3. 注意,当前类只能有一个
    1. DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8" />
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    7. <title>tab栏切换title>
    8. <style>
    9. * {
    10. margin: 0;
    11. padding: 0;
    12. }
    13. .tab {
    14. width: 590px;
    15. height: 340px;
    16. margin: 20px;
    17. border: 1px solid #e4e4e4;
    18. }
    19. .tab-nav {
    20. width: 100%;
    21. height: 60px;
    22. line-height: 60px;
    23. display: flex;
    24. justify-content: space-between;
    25. }
    26. .tab-nav h3 {
    27. font-size: 24px;
    28. font-weight: normal;
    29. margin-left: 20px;
    30. }
    31. .tab-nav ul {
    32. list-style: none;
    33. display: flex;
    34. justify-content: flex-end;
    35. }
    36. .tab-nav ul li {
    37. margin: 0 20px;
    38. font-size: 14px;
    39. }
    40. .tab-nav ul li a {
    41. text-decoration: none;
    42. border-bottom: 2px solid transparent;
    43. color: #333;
    44. }
    45. .tab-nav ul li a.active {
    46. border-color: #e1251b;
    47. color: #e1251b;
    48. }
    49. .tab-content {
    50. padding: 0 16px;
    51. }
    52. .tab-content .item {
    53. display: none;
    54. }
    55. .tab-content .item.active {
    56. display: block;
    57. }
    58. style>
    59. head>
    60. <body>
    61. <div class="tab">
    62. <div class="tab-nav">
    63. <h3>每日特价h3>
    64. <ul>
    65. <li><a class="active" href="javascript:;">精选a>li>
    66. <li><a href="javascript:;">美食a>li>
    67. <li><a href="javascript:;">百货a>li>
    68. <li><a href="javascript:;">个护a>li>
    69. <li><a href="javascript:;">预告a>li>
    70. ul>
    71. div>
    72. <div class="tab-content">
    73. <div class="item active"><img src="./images/tab00.png" alt="" />div>
    74. <div class="item"><img src="./images/tab01.png" alt="" />div>
    75. <div class="item"><img src="./images/tab02.png" alt="" />div>
    76. <div class="item"><img src="./images/tab03.png" alt="" />div>
    77. <div class="item"><img src="./images/tab04.png" alt="" />div>
    78. div>
    79. div>
    80. <script>
    81. // 1. a模块制作,要给5个链接绑定鼠标经过事件
    82. // 1.1 获取a元素
    83. const as = document.querySelectorAll('.tab-nav a')
    84. // console.log(as)
    85. for(let i = 0; i < as.length; i++){
    86. // console.log(as[i])
    87. as[i].addEventListener('mouseenter', function(){
    88. // console.log('鼠标经过')
    89. // 排他思想
    90. // 干掉别人 移除类active
    91. document.querySelector('.tab-nav .active').classList.remove('active')
    92. // 我登基 我添加类active this 当前的那个a
    93. this.classList.add('active')
    94. // 下面5个大盒子一一对应 .item
    95. document.querySelector('.tab-content .active').classList.remove('active')
    96. // 对应序号的那个item显示 添加active类
    97. document.querySelector(`.tab-content .item:nth-child(${i + 1})`).classList.add('active')
    98. })
    99. }
    100. script>
    101. body>
    102. html>

    四、全选文本框案例1

    需求:用户点击全选,则下面复选框全部选择,取消全选则全部取消

    分析:

    1. 全选复选框点击,可以得到当前按钮的checked
    2. 把下面所有的小复选框状态checked,改为和全选复选框一致
    1. DOCTYPE html>
    2. 全选
    3. 商品商家价格
    4. 小米手机小米¥1999
    5. 小米净水器小米¥4999
    6. 小米电视小米¥5999

    五、全选文本框案例2

    需求:用户点击全选,则下面复选框全部选择,取消全选则全部取消,文字对应变化

    分析:

    1. 遍历下面的所有的checkbox,添加点击事件
    2. 检查小复选框选中的个数,是不是等于小复选框总的个数
    3. 把结果给全选按钮
    4. 利用css复选框选择器 input:checked
    1. DOCTYPE html>
    2. 全选
    3. 商品商家价格
    4. 小米手机小米¥1999
    5. 小米净水器小米¥4999
    6. 小米电视小米¥5999

  • 相关阅读:
    C++从0吃透string类
    关于#matlab#的问题:地铁5G信号2.6G频段覆盖,人多时怎么设置微基站,基站部署位置如何,怎么根据地铁站的人流量确定小区怎么划分
    TDengine 入门教程⑦——数据库管理工具 | IDEA 连接 TDengine
    1033 旧键盘打字
    健身房预约小程序开发全攻略
    达梦8 内存泄漏泄漏原因分析之一
    vue echart详细使用说明
    个人用户免费,亚马逊正式推出 AI 编程服务 CodeWhisperer
    neon常用指令(updating)
    使用LDA(线性判别公式)进行iris鸢尾花的分类
  • 原文地址:https://blog.csdn.net/weixin_48719464/article/details/134041283