1. <body>
  2. <!-- 1.标签属性:通过元素的属性:on + 时间名称(时间属性) -->
  3. <button onclick="hello()">提交</button>
  4. <!-- 2.动态属性:元素对象添加属性的方式 -->
  5. <button>提交</button>
  6. <!-- 3.事件监听器-->
  7. <button>提交</button>
  8. <script>
  9. // 1.通过元素的属性:on + 时间名称(时间属性)
  10. function hello() {
  11. alert("hello");
  12. }
  13. // 2.元素对象添加属性的方式(有一个弊端,如果btn2多次绑定同一事件会被覆盖,但是事件监听可以多次绑定)
  14. const btn2 = document.querySelector("button:nth-of-type(2)");
  15. btn2.onclick = function () {
  16. alert("hello");
  17. };
  18. //时间删除
  19. btn2.onclick = null;
  20. // 3.事件监听
  21. // btn3.addEventListener(事件类型,事件回掉方法,是否冒泡);
  22. let btn3 = document.querySelector("button:nth-of-type(3)");
  23. btn3.addEventListener("click", function () {
  24. alert("aa");
  25. })
  26. // 事件移除
  27. //如果事件方法使用了回调,就无法移除 例如弹aa的监听事件就无法用下面方法移除
  28. btn3.removeEvenListener("click", function () {
  29. alert("bbb");
  30. });
  31. // 但是如果是这样的方法就可以移除:
  32. btn3.addEventListener("click", show);
  33. function show() {
  34. alert("bbb");
  35. }
  36. btn3.removeEvenListener("click", show);
  37. // 4.事件派发
  38. let myClick = new Event("click");
  39. let but3 = document.querySelector("button:nth-of-type(3)");
  40. btn3.addEventListener("click",() => {alert("123");})
  41. // 派发事件
  42. setInterval(function () {
  43. btn3.dispatchEvent(myClick);
  44. }, 3000)
  45. </script>
  46. </body>

事件的传递机制

  1. // 事件传递机制:
  2. // 1.捕获:从最外层元素逐级向内,直到事件绑定者
  3. // 2.冒泡:从事件目标逐级向外部,知道最外层元素
  4. // 默认false,事件发生在冒泡阶段
  5. // true事件在捕获
  6. window.addEventListener("click", show, false);
  7. function show(ev) {
  8. // ev:事件对象,是可以直接在事件方法中使用的对象
  9. // ev.target:事件的触发者
  10. // ev.currentTarget:事件的绑定者
  11. }
  1. // 事件冒泡的典型应用场景:事件委托/事件代理
  2. <body>
  3. <ul>
  4. <li class="item">item1</li>
  5. <li class="item">item2</li>
  6. <li class="item">item3</li>
  7. <li class="item">item4</li>
  8. <li class="item">item5</li>
  9. </ul>
  10. <script>
  11. const items = document.querySelectorAll("li");
  12. // 一般情况下,给所有的li添加点击时间
  13. for (let i = 0; i < items.length; i++) {
  14. items[i].onclick = () => console.log("aaa");
  15. }
  16. //采用onclick这种动态属性添加事件,该方法默认的就是冒泡
  17. document.querySelector("ul").onclick = function (ev) {
  18. console.log("aaa");
  19. console.log(ev.target);
  20. };
  21. </script>
  22. </body>

事件实现表单验证

  1. <body>
  2. <form method="post" action="" id="login" name="heihei">
  3. <label class="controltitle">用户登录</label>
  4. <label for="email">邮箱:</label>
  5. <input type="email" id="email" name="email" value="" autofocus />
  6. <label for="password">密码:</label>
  7. <input type="password" id="password" name="password" value="" />
  8. <button name="submit">登录</button>
  9. </form>
  10. <script>
  11. //获取表单元素
  12. const login = document.forms.heihei;
  13. login.submit.onclick = (ev) => {
  14. //禁止默认提交行为
  15. ev.preventDefault();
  16. //禁制冒泡
  17. ev.stopPropagation();
  18. //非空验证
  19. isEmpty(ev.currentTarget.form);
  20. };
  21. function isEmpty(form) {
  22. if (form.email.value.length === 0) {
  23. alert("邮箱不能为空");
  24. form.email.focus();
  25. } else if (form.password.value.length === 0) {
  26. alert("密码不能为空");
  27. form.password.focus();
  28. } else {
  29. alert("验证通过");
  30. }
  31. }
  32. //submit:提交
  33. //focus:焦点
  34. //input:用户输入内容是发生
  35. //blur:失去焦点触发
  36. //change:值发生变化
  37. //select:选择文本触发
  38. </script>
  39. </body>

更多相关文章

  1. 表单事件、键盘事件、get
  2. 07-13作业
  3. dom操作演示、选择器操作演示、鼠标事件演示
  4. 第十九课 表单事件&键盘事件&GET方法
  5. JQuery 常用函数与事件
  6. $.get,$.post,$ajax与Vue基本术语
  7. 事件注册、事件派发、事件代理与留言板
  8. 前端 JavaScript 实现一个简易计算器
  9. 小计不重要

随机推荐

  1. 主函数在程序中的位置在哪
  2. 指针和引用的不同点与相同点分别是什么
  3. c语言函数如何声明
  4. 程序中的注释部分是否参加编译?
  5. c语言%4d什么意思
  6. c语言文件的扩展名是什么
  7. c语言的四大数据类型是什么?
  8. ASP.NET数据库密码:MD5加密算法详解
  9. net4.0怎么安装
  10. unity3d用什么语言开发?