Blogger Information
Blog 48
fans 3
comment 1
visits 30651
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
classList对象/事件/字符串API
吴长清
Original
326 people have browsed it

简单轮播图

  1. <style>
  2. body .box {
  3. margin: auto;
  4. width: 600px;
  5. }
  6. body .box img {
  7. border-radius: 10px;
  8. width: 600px;
  9. }
  10. </style>
  11. <div class="box">
  12. <img src="images/1.jpeg" alt="" />
  13. </div>
  14. <script>
  15. let i = 1;
  16. setInterval(() => {
  17. document.querySelector("img").src = `images/${i}.jpeg`;
  18. console.log("第" + i + "张图片");
  19. i += 1;
  20. if (i > 6) {
  21. i = 1;
  22. }
  23. }, 2000);
  24. </script>

1. classList 对象

css 动态操作 描述
style html元素添加行内样式
getComputedStyle 计算属性,只读不可写,可以用style行内样式来更新样式
classList 操作 class 属性(class 选择器)

classList 对象常用 API

API 语法 描述
add() ele.classList.add('className') 添加
contains() ele.classList.contains('className') 判断,返回 true 或 false,true:表示当前元素有className这个样式
replace() ele.classList.replace('oldClassName','newClassName') 替换
remove() ele.classList.remove('className') 删除
toggle() ele.classList.toggle('className') 切换,判断当前样式在元素上是否存在,若有,则删除,若没有,则添加当前样式

2.事件

事件三要素:
1.事件名称: 字符串
2.事件主体: html 元素 对象
3.事件方法: 函数 监听器

2.1 事件添加/取消

1.直接在元素上添加/取消

  1. <button>元素对象</button>
  2. <script>
  3. const btn = document.querySelector("button");
  4. // 事件添加
  5. btn.onclick = function () {};
  6. // 事件取消
  7. btn.onclick = null;
  8. </script>

2.使用 addEventListener()添加/removeEventListener()取消
addEventListener()/removeEventListener()有三个参数:
参数 1:事件的名称
参数 2:执行事件的回调函数(函数名),添加时可以使用回调函数操作
参数 3:可选参数,事件冒泡时使用,默然 false

  1. <button>元素对象</button>
  2. <script>
  3. const btn = document.querySelector("button");
  4. show = () => {};
  5. // 事件添加
  6. btn.addEventListener("click", show, false);
  7. // 事件取消
  8. btn.removeEventListener("click", show, false);
  9. </script>

2.2 事件派发

1.创建一个自定义事件
2.将这个事件自动派发到指定元素并触发它 一般用定时器来触发

  1. <button>事件派发</button>
  2. <script>
  3. const btn = document.querySelector("button");
  4. let i = 0;
  5. show = () => {
  6. i += 1;
  7. console.log("事件派发" + i);
  8. };
  9. // 事件添加
  10. btn.addEventListener("click", show, false);
  11. // 1.创建一个自定义事件
  12. const myEvent = new Event("click");
  13. // 2.将这个事件自动派发到指定元素并触发它 一般用定时器来触发
  14. // 定时器
  15. // 2.1.setTimeout(): 一次性
  16. // setTimeout(function () {
  17. // btn.dispatchEvent(myEvent);
  18. // }, 2000);
  19. // 2.2 setInterval(): 间歇式
  20. let timer = setInterval(function () {
  21. btn.dispatchEvent(myEvent);
  22. //关闭定时器
  23. if (i >= 5) {
  24. console.log("停止事件派发");
  25. clearInterval(timer);
  26. }
  27. }, 1000);
  28. </script>

2.3 事件冒泡

事件冒泡必要条件:有父子关系且同名
1.当前元素的事件会向上(向父级)进行传递
2.当前元素的事件名称与父级元素事件名称相同

  1. <style>
  2. .item {
  3. list-style: none;
  4. cursor: pointer;
  5. text-align: center;
  6. }
  7. .item:hover {
  8. background-color: lightpink;
  9. color: white;
  10. }
  11. </style>
  12. <ul style="width: 100px">
  13. <li>item1</li>
  14. <li>item2</li>
  15. <li>item3</li>
  16. <li>item4</li>
  17. <li>item5</li>
  18. <li>item6</li>
  19. </ul>
  20. <script>
  21. const lis = document.querySelectorAll("ul li");
  22. // 使用classList添加样式
  23. lis.forEach((item) => item.classList.add("item"));
  24. // 事件冒泡
  25. lis.forEach(
  26. (item) =>
  27. (item.onclick = (item) => {
  28. // 防止冒泡
  29. //event.stopPropagation();
  30. console.log("当前元素:", event.currentTarget);
  31. })
  32. );
  33. // li的父级ul
  34. document.querySelector("ul").onclick = ()
  35. => console.log("li的父级ul: ", event.currentTarget);
  36. // ul的父级body
  37. document.body.addEventListener(
  38. "click",
  39. () => console.log("ul的父级body: ", event.currentTarget),
  40. false
  41. );
  42. </script>

2.4 事件委托/代理

事件委托/代理:将子元素上的事件委托/代理父级元素触发
target 属性与 currentTarget 属性:
发生事件委托/代理时: target事件目标,返回的是事件触发者(子元素)currentTarget事件主体,返回的是事件绑定者(委托/代理的父级元素)
未发生事件委托/代理,targetcurrentTarget 返回值相等

  1. <ul style="width: 100px">
  2. <li>item1</li>
  3. <li>item2</li>
  4. <li>item3</li>
  5. <li>item4</li>
  6. <li>item5</li>
  7. <li>item6</li>
  8. </ul>
  9. <script>
  10. const lis = document.querySelectorAll("ul li");
  11. // 使用classList添加样式
  12. lis.forEach((item) => item.classList.add("item"));
  13. // 事件委托 直接个ul添加事件
  14. document.querySelector("ul").onclick = () => {
  15. console.log(event.target, event.target.innerText);
  16. console.log(event.currentTarget);
  17. };
  18. </script>

2.5 表单事件

事件 语描述
submit 提交事件
focus 获取焦点
blur 失去焦点
chang 值改变,且失去焦点时
input 值一旦改变就触发, 不等失去焦点

取消 form 表单元素默认提交行为有 3 种:
1.修改button的类型。表单内的button的默认类型是submit,修改其类型即可禁止提交,type='button'
2.给form元素的提交事件返回 false 即可,onsubmit="return false"
3.给提交按钮绑定一个事件,并在事件内禁用提交按钮的默认行为,event.preventDefault()

4. 字符串 API

  1. // 声明字符串
  2. let str = "Hello 你好! Welcome to 中文网。";
  3. console.log("获取字符串长度: " + str.length);
  4. // 字符串'o'在str中首次出现的位置(索引)
  5. console.log("在字符串中查找字符串(正序): " + str.indexOf("o"));
  6. // 若没有 返回-1
  7. console.log("没有找到: " + str.indexOf("k"));
  8. // 从后面开始找 返回的索引还是正数
  9. console.log("在字符串中查找字符串(反序): " + str.lastIndexOf("o"));
  10. // 字符串大小写转换
  11. console.log("转小写 " + str.toLowerCase());
  12. console.log("转大写: " + str.toUpperCase());
  13. // 字符串转为数组 按空格符号拆分字符串后分别封装在数组中
  14. console.log("转数组:", str.split(" "));

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