Blogger Information
Blog 29
fans 1
comment 0
visits 14912
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
用JavaScript做简易轮播图和选项卡
Pharaoh
Original
581 people have browsed it

轮播图

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

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post