博主信息
博文 29
粉丝 1
评论 0
访问量 22611
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
用JavaScript做简易轮播图和选项卡
Pharaoh
原创
789人浏览过

轮播图

  1. const bgimg = [
  2. "1 (1).jpeg",
  3. "1 (2).jpeg",
  4. "1 (3).jpeg",
  5. "1 (4).jpeg",
  6. "1 (5).jpeg",
  7. ];
  8. window.onload = loading;
  9. // 动态渲染
  10. function loading() {
  11. for (i = 0; i < bgimg.length; i++) {
  12. // 渲染图片
  13. document
  14. .querySelector(".box")
  15. .insertAdjacentHTML(
  16. "beforeEnd",
  17. `<img src='${bgimg[i]}' alt='' data-index='${i}'>`
  18. );
  19. // 渲染按钮
  20. document
  21. .querySelector(".btn")
  22. .insertAdjacentHTML("beforeEnd", `<span data-index='${i}'></span>`);
  23. }
  24. // 给第一张图片和第一个按钮添加默认样式
  25. let btn = document.querySelectorAll("span");
  26. let img = document.querySelectorAll("img");
  27. btn[0].classList.add("select");
  28. img[0].classList.add("imgselect");
  29. // 给所有按钮添加事件监听
  30. btn.forEach((ele) => (ele.onclick = select));
  31. // 重点:先把所有图片和按钮的样式去掉,再把触发事件的样式和对应的图片加上样式
  32. function select() {
  33. btn.forEach((ele) => ele.classList.remove("select"));
  34. event.target.classList.add("select");
  35. img.forEach((ele) => {
  36. ele.classList.remove("imgselect");
  37. if (ele.dataset.index === event.target.dataset.index) {
  38. ele.classList.add("imgselect");
  39. }
  40. });
  41. }
  42. setInterval(
  43. (ele) => {
  44. let num = ele.shift();
  45. btn[num].dispatchEvent(new Event("click"));
  46. ele.push(num);
  47. },
  48. 2500,
  49. Object.keys(btn)
  50. );
  51. }

选项卡

  1. let cardbox = document.querySelectorAll(".title > div");
  2. let content = document.querySelectorAll("ul");
  3. cardbox.forEach((ele) => (ele.onclick = show));
  4. function show() {
  5. cardbox.forEach((ele) => ele.classList.remove("cardshow"));
  6. event.target.classList.add("cardshow");
  7. content.forEach((ele) => {
  8. ele.classList.remove("show");
  9. if (ele.dataset.index === event.target.dataset.index) {
  10. ele.classList.add("show");
  11. }
  12. });
  13. }

常用的数组API

  • 添加/删除元素:

    • push(…items) —— 向尾端添加元素,
    • pop() —— 从尾端(删除)提取一个元素,
    • shift() —— 从首端(删除)提取一个元素,
    • unshift(…items) —— 向首端添加元素,
    • splice(pos, deleteCount, …items) —— 从 pos 开始删除 deleteCount 个元素,并插入 items 。
    • slice(start, end) —— 创建一个新数组,将从索引 start 到索引 end (但不包括 end )的元素复制进去。
    • concat(…items) —— 返回一个新数组:复制当前数组的所有元素,并向其中添加 items 。如果 items 中的任意一项是一个数组,那么就取其元素。
  • 搜索元素:

  • indexOf/lastIndexOf(item, pos) —— 从索引 pos 开始搜索 item ,搜索到则返回该项的索引,否则返回 -1 。

  • includes(value) —— 如果数组有 value ,则返回 true ,否则返回 false 。
  • find/filter(func) —— 通过 func 过滤元素,返回使 func 返回 true 的第一个值/所有值。
  • findIndex 和 find 类似,但返回索引而不是值。

  • 遍历元素:

    • forEach(func) —— 对每个元素都调用 func ,不返回任何内容。
  • 转换数组:

    • map(func) —— 根据对每个元素调用 func 的结果创建一个新数组。
    • sort(func) —— 对数组进行原位(in-place)排序,然后返回它。
    • reverse() —— 原位(in-place)反转数组,然后返回它。
    • split/join —— 将字符串转换为数组并返回。
    • reduce/reduceRight(func, initial) —— 通过对每个元素调用 func 计算数组上的单个值,并在调用之间传递中间结果。

    其他:

    • Array.isArray(arr) 检查 arr 是否是一个数组。
  1. let x = [1, 2, 3, 4, 5, 6];
  2. // 将一个类数组转为数组
  3. Array.from(x);
  4. // splice(start,[,num,elm,elm1,....,elmn])
  5. // 从索引0开始,删除三个元素,用两个元素替换
  6. x.splice(0, 3, "替换1-3", "替换1-3");
  7. console.log(x);
  8. // 从索引1开始,删除0个,并在索引1前面插入元素
  9. x.splice(1, 0, "我插在索引1的前面");
  10. console.log(x);
  11. // slice(start [,end])跟字符串api类似,返回开始索引位置,到结束索引(结束索引也被抛弃),如果不填第二个参数,则显示从起始位置到最后索引的所有
  12. // 不会更改原有数组,只会返回新数组
  13. console.log("slice()");
  14. console.log(x.slice(0, 1));
  15. // concat()跟字符串的api类似,合并数组的元素 ,不会更改原有数组,只会返回新数组
  16. console.log("concat()");
  17. console.log(x.concat(["1", "2", "3"], 9, 8, ["7", 6]));
  18. // indexOf(index [,form])正向查找/lastIndexOf(index [,form]) 反向查找/includes(index [,form]) 判断有没有
  19. console.log("indexOF()/lastIndexOf()/includes()");
  20. console.log(x.indexOf(1, 0)); // 如果没有返回-1
  21. console.log(x.lastIndexOf(5));
  22. // console.log(includes(10));
  23. // find(function (item,index,arr)) 返回满足条件的第一个值,没有满足的返回fasle/findindex()跟find基本类似,只不过返回索引
  24. let y = x.findIndex((item) => item > 5);
  25. console.log("find()/findindex()");
  26. console.log(y);
  27. // filter(function (item,index,arr)) 返回满足条件的数组,push添加进接收的数组
  28. console.log("filter()");
  29. let arr3 = x.filter((item) => item > 3);
  30. console.log(arr3);

批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学