DOM——事件介绍与简单应用

简介: DOM——事件介绍与简单应用

事件


事件:触发-响应机制


Event接口表示在DOM中发生的任何事件,一些是用户生成的(例如鼠标或键盘事件),而其他由API生成。


事件三要素


  • 事件源:触发(被)事件的元素


  • 事件类型:事件的触发方式(例如鼠标点击或键盘点击)


  • 事件处理程序:事件触发后要执行的代码(函数形式)


事件的基本使用


var box = document.getElementById('box');
box.onclick = function() {
  console.log('代码会在box被点击后执行');  
};


案例


1.点击按钮修改多个标签


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" value="按钮" id="btn">
<div>
    <p>我是一个p</p>
    <p>我是一个p</p>
    <p>我是一个p</p>
    <p>我是一个p</p>
    <p>我是一个p</p>
</div>
<script>
    document.getElementById("btn").onclick=function () {
        var pObjs=document.getElementsByTagName("p");
        for (var i=0;i<pObjs.length;i++)
            pObjs[i].innerText="我们不是p,我们是你们的爸爸";
    }
</script>
</body>
</html>


2.排他功能


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>排他</title>
</head>
<body>
<input type="button" value="没怀孕"/>
<input type="button" value="没怀孕"/>
<input type="button" value="没怀孕"/>
<input type="button" value="没怀孕"/>
<input type="button" value="没怀孕"/>
<input type="button" value="没怀孕"/>
<script>
    //获取所有的按钮,分别注册点击事件
    var btnObjs = document.getElementsByTagName("input");
    //循环遍历所有的按钮
    for (var i = 0; i < btnObjs.length; i++) {
        //为每个按钮都要注册点击事件
        btnObjs[i].onclick = function () {
            //把所有的按钮的value值设置为默认的值:没怀孕
            for (var j = 0; j < btnObjs.length; j++) {
                btnObjs[j].value = "没怀孕";
            }
            //当前被点击的按钮设置为:怀孕了
            this.value = "怀孕了";
        };
    }
    //for循环是在页面加载的时候,执行完毕了
    //  for(var k=0;k<5;k++){
    //
    //  }
    //  console.log(k);//
    //事件是在触发的时候,执行的
</script>
</body>
</html>


3.点击按钮改变div的属性设置



<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>有压力</title>
  <style>
    div{
      width: 300px;
      height: 200px;
      background-color: darkmagenta;
    }
  </style>
</head>
<body>
<input type="button" value="隐藏" id="btn"/>
<input type="button" value="变身后显示" id="btn2"/>
<input type="button" value="第二种隐藏" id="btn3"/>
<div id="dv">
</div>
<script src="common.js"></script>
<script>
  //根据id获取按钮,注册点击事件,添加事件处理函数
  my$("btn").onclick=function () {
    my$("dv").style.display="none";
  };
  my$("btn2").onclick=function () {
    my$("dv").style.width = "300px";
    my$("dv").style.height = "200px";
    my$("dv").style.backgroundColor = "pink";
    my$("dv").style.display="block";
  };
  my$("btn3").onclick=function() {
    if(this.value=="第二种隐藏"){
      my$("dv").style.display="none";//隐藏
      this.value="显示";
    }else if(this.value=="显示"){
      my$("dv").style.display="block";//显示
      this.value="第二种隐藏";}
  };
</script>
</body>
</html>


4.隐藏于显示的另一种方法(改变类名)


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>ddd</title>
  <style>
    div {
      width: 300px;
      height: 200px;
      background-color: yellow;
      border: 2px solid red;
    }
    .cls {
      display: none;
    }
  </style>
</head>
<body>
<input type="button" value="隐藏" id="btn"/>
<div id="dv"></div>
<script src="common.js"></script>
<script>
  //点击按钮,通过类样式的方式设置div的显示和隐藏
  my$("btn").onclick = function () {
    // console.log(my$("dv").className);
    //判断的是div是否应用了类样式
    if (my$("dv").className != "cls") {
      //现在是显示的,应该隐藏
      my$("dv").className = "cls";
      this.value = "显示";
    } else {
      //隐藏的状态----立刻显示
      my$("dv").className = "";
      this.value = "隐藏";
    }
  };
</script>
</body>
</html>


其他案例


https://blog.csdn.net/weixin_45525272/article/details/108097295

相关文章
|
7月前
|
存储 JavaScript 数据可视化
vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化
vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化
183 1
|
7月前
|
JavaScript 前端开发 算法
js开发:请解释什么是虚拟DOM(virtual DOM),以及它在React中的应用。
虚拟DOM是React等前端框架的关键技术,它以轻量级JavaScript对象树形式抽象表示实际DOM。当状态改变,React不直接操作DOM,而是先构建新虚拟DOM树。通过高效diff算法比较新旧树,找到最小变更集,仅更新必要部分,提高DOM操作效率,降低性能损耗。虚拟DOM的抽象特性还支持跨平台应用,如React Native。总之,虚拟DOM优化了状态变化时的DOM更新,提升性能和用户体验。
102 0
|
1月前
|
JavaScript 算法 前端开发
虚拟 DOM 如何提高应用的性能?
虚拟 DOM 通过减少真实 DOM 操作、高效的 Diff 算法、提升渲染性能、跨平台能力以及优化内存管理等多种方式,全面提高了应用的性能,为用户提供了更流畅、高效的交互体验,尤其在构建大型、复杂的前端应用时,其性能优势更加显著。
42 1
|
1月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
49 5
|
2月前
|
缓存 编解码 JavaScript
DOM 和 BOM 在项目中应用时的性能优化方法
【10月更文挑战第19天】总之,优化 DOM 和 BOM 的性能需要综合考虑多个方面,通过合理的设计和技术手段,提升项目的运行效率和用户体验。在实际开发中,要不断地进行性能优化实践,以适应不断变化的需求和技术发展。
|
2月前
|
JavaScript 安全 物联网
DOM 和 BOM 在项目中的应用
【10月更文挑战第19天】在现代网页开发和应用项目中,DOM(文档对象模型)和 BOM(浏览器对象模型)扮演着至关重要的角色。它们为开发者提供了与网页文档和浏览器环境进行交互的能力,使项目能够实现丰富的功能和用户体验。
|
3月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
28 5
|
2月前
|
JavaScript 前端开发 API
深入理解jQuery:高效DOM操作与事件处理
【10月更文挑战第11天】深入理解jQuery:高效DOM操作与事件处理
29 0
|
3月前
|
前端开发 JavaScript
CSS中禁用DOM事件
CSS中禁用DOM事件
|
5月前
|
移动开发 JavaScript 前端开发
VUE实现一个列表清单【props 父子组件通信、slot插槽的使用、全局自定义指令的封装、$nextTick解决异步DOM更新、巧用v-model简化父子组件之间的通信、触发事件的事件源event】
VUE实现一个列表清单【props 父子组件通信、slot插槽的使用、全局自定义指令的封装、$nextTick解决异步DOM更新、巧用v-model简化父子组件之间的通信、触发事件的事件源event】
49 0