Blogger Information
Blog 29
fans 0
comment 0
visits 19738
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
js:事件、留言板、常用字符串函数
手机用户1576673622
Original
578 people have browsed it

1 事件

事件添加

3个方法

  • 1

    1. <!-- 1 添加到元素的属性上面 -->
    2. <button onclick="console.log(this.innerHTML)">按钮1</button>
  • 2

    1. <!-- 2 通过脚步添加到事件属性上面 -->
    2. <script>
    3. const btn2 = document.querySelector('body button:nth-of-type(2)');
    4. // 添加事件
    5. btn2.onclick = function () {
    6. console.log(this.innerHTML);
    7. }
    8. // onclick 不能重复定义同一事件. 第3中的事件监听器可以
    9. // 移除事件
    10. // bth2.onclick=null;
  • 3 (重要)

    1. // 3 通过事件监听器添加事件
    2. // addEventListener(事件类型,事件回调方法,触发阶段)
    3. const btn3 = document.querySelector('body button:nth-of-type(3)')
    4. btn3.addEventListener('click', function () {
    5. console.log(this.innerHTML, '第一次');
    6. })
    7. btn3.addEventListener("click", function () {
    8. console.log(this.innerHTML, "第二次");
    9. });
    10. // 3.1 移除事件,通过回调添加的事件无法移除
    11. // 事件方法函数
    12. const handle = () => console.log(btn3.innerHTML, "第三次");
    13. btn3.addEventListener("click", handle);
    14. // 3.2 事件派发
    15. const btn4 = document.querySelector("body button:nth-of-type(4)");
    16. // 自定义事件
    17. const ev = new Event("click");
    18. let i = 0;
    19. btn4.addEventListener("click", function () {
    20. console.log("点击了广告, 共计: " + i + "元");
    21. i += 0.5;
    22. });
    23. // 分配dispatchEvent
    24. // btn4.dispatchEvent(ev);
    25. // 使用间歇式定时器来自动点击广告
    26. setInterval("btn4.dispatchEvent(ev)", 1000);

    事件传递

    1. <ul>
    2. <li>item1</li>
    3. <li>item2</li>
    4. <li>item3</li>
    5. <li>item4</li>
    6. <li>item5</li>
    7. </ul>
    1. // 事件传递:
    2. // 1. 捕获: 从最外层元素逐级向内直到事件的绑定者
    3. // 2. 目标: 到达事件目标
    4. // 3. 冒泡: 从目标再由内向外逐级向上直到最外层元素
    5. const lis = document.querySelectorAll("li");
    6. lis.forEach(
    7. li =>
    8. (li.onclick = ev => {
    9. // console.log(ev); 事件默认参数,默认事件对象
    10. // 事件对象: 保存着当前事件的所有信息
    11. // 事件类型
    12. // console.log(ev.type);
    13. // 事件绑定者
    14. console.log(ev.currentTarget);
    15. // 事件触发者
    16. // console.log(ev.target);
    17. // console.log(ev.currentTarget === ev.target);
    18. // 事件传递的路径
    19. console.log(ev.path);
    20. // 阻止事件冒泡
    21. ev.stopPropagation();
    22. })
    23. );
    24. // on+event: 不支持捕获,只有冒泡
    25. // li.onclick = function () {};
    26. // 捕获, 第三个参数是true表示事件在捕获阶段触发,false是冒泡(默认)

    事件冒泡与事件代理

    1. <ul>
    2. <li>item1</li>
    3. <li>item2</li>
    4. <li>item3</li>
    5. <li>item4</li>
    6. <li>item5</li>
    7. </ul>
    8. <script>
    9. // 事件代理: 也叫"事件委托"
    10. const lis = document.querySelectorAll("li");
    11. // 遍历每个li,并逐个为它添加点击事件
    12. // lis.forEach(li => (li.onclick = ev => console.log(ev.currentTarget)));
    13. // 通过父节点添加点击事件(常用 重要) document.querySelector("ul").addEventListener("click", ev => {
    14. // 事件绑定者
    15. console.log(ev.currentTarget);
    16. // 事件触发者,通常是"事件绑定者"的子元素
    17. console.log(ev.target.innerHTML);
    18. });
    19. </script>

    2 留言板

    1. // 获取元素
    2. const msg = document.querySelector("input");
    3. const list = document.querySelector("#list");
    4. msg.onkeydown = ev => {
    5. // 键盘事件中,key表示按下的键名
    6. // console.log(ev.key);
    7. if (ev.key === "Enter") {
    8. // 非空判断
    9. if (ev.currentTarget.value.length === 0) {
    10. alert("内容不能为空");
    11. } else {
    12. // 将留言内容添加到列表中
    13. // 创建留言
    14. let str = `<li>${ev.currentTarget.value}</li>`;
    15. // 应该将最新的信息永远放在第一条
    16. list.insertAdjacentHTML("afterbegin", str);
    17. // 清空上一条留言
    18. ev.currentTarget.value = null;
    19. }
    20. }
    21. };

    3 字符串常用函数

    ```javascript

    1. // 1. concat()拼装
    2. let str = "html".concat(" css ", "php !", 888);
    3. console.log(str);
    4. // 2. slice(start, end):取子串
    5. const strs = "123456789"
    6. //strs.slice(2,4)// 34
    7. // 支持负数
    8. strs.slice(-3, -1)// 78
    9. // 3. substr(start(开始位置), length(数量))
    10. res = strs.substr(0, 5);
    11. console.log(res); //12345
    12. // 4. trim():删除二端空格
    13. let psw = " root888 ";
    14. console.log(psw.length);// 14
    15. psw = " root888 ";
    16. console.log(psw.trim().length);// 7
    17. // 5. split() 将字符串打成数组
    18. res = strs.split("");
    19. console.log(res);// (9) ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
    20. // 6. charAt(序号) 。返回序号位置上的字符
    21. res = strs.charAt(0)
    22. console.log(res); // 1
    23. // 7. indexOf() 定位字符串中某一个指定的字符首次出现的位置
    24. res= strs.indexOf(4)
    25. console.log(res);// 3
    26. // 8.lastIndexOf() 与indexOf方法类似,只不过它是从该字符串的末尾开始查找而不是从开头。
    27. // 9. replace(要替换的,替换成) 在字符串中用某些字符替换另一些字符。
    28. res =strs.replace(5,0)
    29. console.log(res);// 123406789
    30. // 10. match() 查找字符串中特定的字符,并且如果找到的话,则返回这个字符
    31. res = strs.match(23)
    32. console.log(res);// ["23", index: 1, input: "123456789", groups: undefined]

```

Correcting teacher:天蓬老师天蓬老师

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