博客列表 >用JavaScript做简易轮播图和选项卡

用JavaScript做简易轮播图和选项卡

Pharaoh
Pharaoh原创
2022年08月01日 00:18:02580浏览

轮播图

  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);

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议