亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 27
粉絲 1
評論 2
訪問量 96909
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
只用JS寫選項卡
          
原創(chuàng)
859人瀏覽過
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8. <title>選項卡</title>
  9. <style>
  10. .box >.nav{
  11. display: grid;
  12. grid-template-columns: repeat(10,1fr);
  13. }
  14. /*隱藏*/
  15. .hidden{display: none}
  16. /*顯示*/
  17. .show{ background-color: lightgreen; }
  18. </style>
  19. </head>
  20. <body>
  21. <div class="box">
  22. <!-- 欄目-->
  23. <div class="nav"></div>
  24. <!-- 內容部分-->
  25. <div class="content"></div>
  26. </div>
  27. <script type="module">
  28. // 1. 導入模塊
  29. import {createTab,setBtnStatus, setContentStatus} from "./ceshimodules/mymodules.js";
  30. // 獲取導航欄
  31. let navs = document.querySelector('.nav');
  32. // 獲取內容區(qū)
  33. let content = document.querySelector('.content')
  34. // console.log(content)
  35. // 2. 頁面加載完成,創(chuàng)建欄目和對應的內容
  36. // 游覽器加載完畢執(zhí)行js ,傳入導航欄和內容
  37. window.onload = function (){
  38. createTab(navs,content)
  39. }
  40. // 3. 點擊欄目時,設置按鈕的狀態(tài),與按鈕對應的內容的狀態(tài)
  41. // 事件委托(事件冒泡)
  42. navs.onclick = function (ev){
  43. // console.log(ev.currentTarget)
  44. // console.log(ev.target)
  45. // 1.當前的按鈕設置高亮
  46. setBtnStatus(ev)
  47. // 2.與按鈕對應的內容顯示出來
  48. setContentStatus(ev,ev.target)
  49. }
  50. </script>
  51. </body>
  52. </html>

JS部分

  1. // 欄目數(shù)據(jù)
  2. const lanmu = [
  3. {'cid': 1, t1: '廣東新聞'},
  4. {'cid': 2, t1: '深圳新聞'},
  5. {'cid': 3, t1: '佛山新聞'},
  6. ]
  7. // 內容數(shù)據(jù)
  8. const contentLists = [
  9. {
  10. id: 1,
  11. cid: 1,
  12. title: '標題1',
  13. content: [
  14. {
  15. title: '內容1',
  16. url: 'http://baidu.com'
  17. },
  18. {
  19. title: '內容1',
  20. url: 'http://baidu.com'
  21. },
  22. {
  23. title: '內容1',
  24. url: 'http://baidu.com'
  25. }
  26. ]
  27. },
  28. {
  29. id: 2,
  30. cid: 2,
  31. title: '標題2',
  32. content: [
  33. {
  34. title: '內容2',
  35. url: 'http://baidu.com'
  36. },
  37. {
  38. title: '內容2',
  39. url: 'http://baidu.com'
  40. },
  41. {
  42. title: '內容2',
  43. url: 'http://baidu.com'
  44. }
  45. ]
  46. },
  47. {
  48. id: 3,
  49. cid: 3,
  50. title: '標題3',
  51. content: [
  52. {
  53. title: '內容3',
  54. url: 'http://baidu.com'
  55. },
  56. {
  57. title: '內容3',
  58. url: 'http://baidu.com'
  59. },
  60. {
  61. title: '內容3',
  62. url: 'http://baidu.com'
  63. }
  64. ]
  65. },
  66. ]
  67. function createTab(navs, content) {
  68. // 1. 生成樣目
  69. for (let i = 0; i < lanmu.length; i++) {
  70. let but1 = document.createElement('button');
  71. // 生成每一個button
  72. // button 的文字
  73. but1.textContent = lanmu[i]['t1'];
  74. but1.dataset.key = lanmu[i].cid
  75. if (i === 0) but1.classList.add('show')
  76. navs.append(but1)
  77. }
  78. // 2. 生成內容
  79. for (let i = 0; i < contentLists.length; i++) {
  80. // (1) 創(chuàng)建列表 <ul>
  81. let ul = document.createElement('ul');
  82. // (2) 添加列表索引<ul data-key>
  83. ul.dataset.key = contentLists[i]['cid']
  84. // (3) 默認顯示第1個,其它隱藏
  85. ul.classList.add(i === 0 ? 'show' : 'hidden')
  86. // (4) 生成子元素<li><a>用于顯示每一條數(shù)據(jù)
  87. for (let l = 0; l < contentLists[i].content.length; l++) {
  88. // 1. 生成 <li>
  89. let li = document.createElement('li');
  90. // 2. 生成 <a>
  91. let a = document.createElement('a')
  92. // 3. a.href
  93. // console.log('111',contentLists[i].content[l].url)
  94. a.href = contentLists[i].content[l].url
  95. // 4. a.textContent
  96. a.textContent = contentLists[i].content[l].title
  97. // console.log(contentLists[i].content[l].title)
  98. // 5. 將<a>添加到<li>
  99. li.append(a)
  100. // 6. <li>添加到<ul>
  101. ul.append(li)
  102. // 7. <ul>添加到內容容器中.content
  103. content.append(ul)
  104. }
  105. }
  106. }
  107. function setBtnStatus(ev){
  108. // 1.當前的按鈕
  109. let currentBtn = ev.target;
  110. // console.log('當前的按鈕',currentBtn)
  111. // 2. 去掉所有按鈕的show, 遍歷
  112. // ev.currentTarget: 事件綁定主體 , 父元素
  113. // console.log(ev.currentTarget.children);
  114. // console.log(typeof [...ev.currentTarget.children]);
  115. // console.log([...ev.currentTarget.children]);
  116. [...ev.currentTarget.children].forEach(function (btn){btn.classList.remove('show')})
  117. // 3.設置當前按鈕的亮度
  118. currentBtn.classList.add('show')
  119. }
  120. function setContentStatus(ev,currentBtn){
  121. // 1. 獲取所有列表
  122. let lists = document.querySelectorAll('.content>ul')
  123. // 2. 去掉所有列表show,換成hidden
  124. lists.forEach( list=>list.classList.replace('show','hidden'))
  125. // 3. 找到與欄目key對應的列表
  126. const gongtongdain = [...lists].find(list => list.dataset.key == currentBtn.dataset.key);
  127. // console.log(gongtongdain)
  128. // 4. 將要顯示的列表,加上active,顯示出來
  129. // gongtongdain.classList.replace()
  130. gongtongdain.classList.replace('hidden','show')
  131. }
  132. export {createTab,setBtnStatus, setContentStatus}

批改老師:PHPzPHPz

批改狀態(tài):合格

老師批語:完成的很好, 繼續(xù)加油
本博文版權歸博主所有,轉載請注明地址!如有侵權、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務協(xié)議
0條評論
作者最新博文
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學習!
    全站2000+教程免費學