博客列表 >js:事件、留言板、常用字符串函数

js:事件、留言板、常用字符串函数

手机用户1576673622
手机用户1576673622原创
2021年03月27日 10:42:48579浏览

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]

```

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