博客列表 >js事件与常用函数

js事件与常用函数

咸鱼老爷
咸鱼老爷原创
2021年03月03日 16:27:54731浏览

事件

事件添加

  • 1、添加到元素的事件属性上
    1. <button onclick='conslole.log(this,innerHTML)'>这是按钮</button>
  • 2、通过脚本添加到事件属性上
    1. const btn=document.querySelector('button');
    2. btn.onclick=function(){
    3. consloe.log(this.innerHTML);
    4. }

移除事件:btn.onclick=null

  • 3、通过事件监听器添加事件
    addEventListener(事件类型,事件回调方法,触发阶段)
    1. btn.addEventListener('click',function(){
    2. console.log(this.innerHTML);
    3. })
    移除事件:通过回调添加的事件是无法移除的;
    事件移除函数:
    btn.removeEventListener(事件类型,方法);
    注意:通过脚本添加事件只能响应一个,事件监听器可以添加多个事件。
  • 事件派发
    1. //自定义点击事件
    2. const ev = new Event('click');
    3. const btn = document.querySelector('button');
    4. let i = 0
    5. btn.addEventListener('click', () => console.log('点击了' + i++ + "次"));
    6. //事件派发自动执行
    7. // btn.dispatchEvent(ev)
    8. //使用间歇式定时器自动执行
    9. setInterval('btn.dispatchEvent(ev)', 1000);
  • 事件传递

    1. const lis = document.querySelectorAll('li');
    2. lis.forEach(li => {
    3. (li.onclick = (ev) => {
    4. console.log('事件对象' + ev)
    5. // 事件对象:保存着当前事件的所有信息
    6. //事件类型
    7. console.log('事件类型' + ev.type);
    8. //事件绑定者
    9. console.log('事件绑定者' + ev.currentTarget);
    10. // 事件触发者
    11. console.log('事件触发者' + ev.target);
    12. //事件传递的路径
    13. console.log('事件传递途径' + ev.path);
    14. //on+event:不支持捕获,只有冒泡
    15. })
    16. });

    1、捕获:从最外层元素逐级向内直到事件的绑定者;

    1. const lis = document.querySelectorAll('li');
    2. lis.forEach(li => {
    3. (li.onclick = ev => {
    4. // console.log('事件对象' + ev)
    5. // // 事件对象:保存着当前事件的所有信息
    6. // //事件类型
    7. // console.log('事件类型' + ev.type);
    8. // //事件绑定者
    9. console.log('事件绑定者' + ev.currentTarget);
    10. // // 事件触发者
    11. // console.log('事件触发者' + ev.target);
    12. //事件传递的路径
    13. console.log('事件传递途径' + ev.path);
    14. //on+event:不支持捕获,只有冒泡
    15. })
    16. });
    17. //捕获,第三个参数是true表示事件在捕获阶段触发,false是冒泡(默认)
    18. // window
    19. window.addEventListener('click', ev => console.log(ev.currentTarget), true)
    20. // document
    21. document.addEventListener('click', ev => console.log(ev.currentTarget), true)
    22. // html
    23. document.documentElement.addEventListener('click', ev => console.log(ev.currentTarget), true)
    24. // body
    25. document.body.addEventListener('click', ev => console.log(ev.currentTarget), true)
    26. // ul
    27. document.querySelector('ul').addEventListener('click', ev => console.log(ev.currentTarget), true);


    2、目标:到达事件目标

3、冒泡:从目标再由内向外逐级向上直到最外层元素

  1. // ul
  2. document.querySelector('ul').addEventListener('click', ev => console.log(ev.currentTarget));
  3. // body
  4. document.body.addEventListener('click', ev => console.log(ev.currentTarget))
  5. // html
  6. document.documentElement.addEventListener('click', ev => console.log(ev.currentTarget))
  7. // document
  8. document.addEventListener('click', ev => console.log(ev.currentTarget))
  9. // window
  10. window.addEventListener('click', ev => console.log(ev.currentTarget))


阻止冒泡:ev.stopPropagation();

  • 事件代理|事件委托
    1. const lis = document.querySelectorAll('li');
    2. //遍历每个li,并逐个为它添加点击事件
    3. // lis.forEach(li => (li.onclick = ev => console.log(ev.currentTarget)))
    4. const ul = document.querySelector('ul').addEventListener('click', ev => {
    5. // 事件绑定者
    6. console.log(ev.currentTarget);
    7. // 事件触发者,通常是事件绑定者的子元素
    8. console.log(ev.target.innerHTML);
    9. })

表单常用事件

focus:获取焦点
blur:失去焦点
input:只要值发生变化时连续触发,不等失去焦点
change:值发生变化了改变失去焦点了时触发,input ,select, textarea
select:选中文本时触发 ,input ,textarea
invalid:提交时表单元素值不满足验证条件时触发
reset:将表单值全部重置到默认值
submit:提交表单时触发,注意触发对象是form,提交的是表单而不是按钮
keydown:按下键盘时;
keyup:松开键盘时
keypress:按过了键盘时,按下有值键时(除ctrl/alt/shift/meta),先触发keydown
按下一直不放手的触发顺序:keydown,keypress,重复这两个事件,直到keyup
表单中的每一个子元素都一个form属性,指向它所属的表单(ev.currentTarget.form)

  1. //获取表单
  2. // const login = document.forms[0];
  3. // const login = document.forms['login'];
  4. // const login = document.forms.item(0);
  5. // const login = document.forms.item('login');
  6. // const login = document.forms.namedItem('login');
  7. const login = document.querySelector('#login')
  8. console.log(login);
  9. //提交事件
  10. // login.onsubmit = () => alert('提交');
  11. //如果是自定义表单的提交行为,应该禁用默认提交行为
  12. login.onsubmit = ev => ev.preventDefault();
  13. //自定义提交
  14. login.submit.onclick = ev => {
  15. //阻止冒泡
  16. ev.stopPropagation();
  17. }

非空验证小案例

  1. function isEmpty(form) {
  2. console.log(form.username.value.length);
  3. console.log(form.password.value.length);
  4. if (form.username.value.length === 0) {
  5. alert('账号不能为空');
  6. form.username.focus();
  7. return false;
  8. }
  9. if (form.password.value.length === 0) {
  10. alert('密码不能为空');
  11. form.password.focus();
  12. return false;
  13. }
  14. alert('验证通过');
  15. }

实现简单留言板

  1. <body>
  2. <label for="message"><input type="text" name="message" id="message"></label>
  3. <ol class="list"></ol>
  4. </body>
  5. <script>
  6. const msg = document.querySelector('#message')
  7. const list = document.querySelector('.list')
  8. msg.onkeydown = ev => {
  9. // console.log(ev.keyCode);
  10. if (ev.keyCode == 13) {
  11. if (ev.currentTarget.value.length == 0) {
  12. alert('内容不能为空')
  13. } else {
  14. let str = `<li>${ev.currentTarget.value}</li>`;
  15. list.insertAdjacentHTML("afterbegin", str);
  16. ev.currentTarget.value = ''
  17. }
  18. };
  19. }
  20. </script>

字符串常用函数

  • 1、concat() 拼装
    1. let str = 'html'.concat('css', 'php', 888);
    2. console.log(str);
  • 2、slice(开始,结尾) 取子串;正方向从前取从0开始。负值从后取-1开始。
    1. let res = str.slice(0);
    2. res = str.slice(-1)
    3. console.log(res);
  • 3、substr(开始,长度) 支持负数
    1. res = str.substr(0, 5)
    2. console.log(res);
  • 4、trim() 去掉俩端空格
    1. let pow = ' asdasd ';
    2. console.log(pow.length);
    3. console.log(pow.trim().length);
  • 5、split(分隔符) 将字符串打散成数组
    1. res = str.split('');
    2. console.log(res);
  • 6、toUpperCase() / toLowerCase() 大小写转换
    1. res = str.toUpperCase();
    2. console.log(res);
    3. res = str.toLowerCase();
    4. console.log(res);
  • 7、 indexOf()来定位字符串中某一个指定的字符首次出现的位置
    1. res = str.indexOf('m');
    2. console.log(res);
  • 8、match() 查找字符串中特定的字符,并且如果找到的话,则返回这个字符
    1. res = str.match('html');
    2. console.log(res);
  • 9、 replace(要替换的,替换成) 在字符串中用某些字符替换另一些字符。
    1. res = str.replace('html', 'hello');
    2. console.log(res);
  • 10、charAt() 返回指定位置的字符 从0开始第一个
    1. res = str.charAt(5);
    2. console.log(res);
  • 11 、substring() 提取字符串中介于两个指定下标之间的字符。返回的子串包括 开始 处的字符,但不包括 结束 处的字符。substring(from, to)
    1. res = str.substring(0, 7);
    2. console.log(res);
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议