博客列表 >classList对象/事件/字符串API

classList对象/事件/字符串API

吴长清
吴长清原创
2022年08月01日 09:17:53313浏览

简单轮播图

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

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