js DOM的事件常见操作实例详解


Posted in Javascript onDecember 16, 2019

本文实例讲述了js DOM的事件常见操作。分享给大家供大家参考,具体如下:

一、JavaScript的组成

JavaScript基础分为三个部分:

  • ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。
  • DOM:文档对象模型,操作网页上的元素的API。比如让盒子移动、变色、轮播图等。
  • BOM:浏览器对象模型,操作浏览器部分功能的API。比如让浏览器自动滚动。

二、事件

JS是以事件驱动为核心的一门语言。

事件的三要素

事件的三要素:事件源、事件、事件驱动程序

总结如下:

  • 事件源:引发后续事件的html标签。
  • 事件:js已经定义好了(见下图)。
  • 事件驱动程序:对样式和html的操作。也就是DOM

代码书写步骤如下:(重要)

  • (1)获取事件源:document.getElementById("box"); //类似与ios语言的 UIButton *adBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  • (2)绑定事件: 事件源box.事件onclick = function(){ 事件驱动程序 };
  • (3)书写事件驱动程序:关于DOM的操作

举例:

<body>
<div id="box1">123</div>
<script type="text/javascript">
  // 1、获取事件源
  var div = document.getElementById("box1");
  // 2、绑定事件
  div.onclick = function () {
    // 3、书写事件驱动程序
    alert("我是弹出的内容");
  }
</script>
</body>
//点击123将弹出要显示的内容

常用事件:

js DOM的事件常见操作实例详解

1、获取事件源的方式(DOM节点的获取)

var div1 = document.getElementById("box1");   //方式一:通过id获取单个标签
var arr1 = document.getElementsByTagName("div1");   //方式二:通过 标签名 获得 标签数组,所以有s
var arr2 = document.getElementsByClassName("hehe"); //方式三:通过 类名 获得 标签数组,所以有s

2、绑定事件的方式

方式一:直接绑定匿名函数

<div id="box1" >123</div>
<script type="text/javascript">
  var div1 = document.getElementById("box1");
  //绑定事件的第一种方式
  div1.onclick = function () {
    alert("我是弹出的内容");
  }
</script>

方式二:先单独定义函数,再绑定

<div id="box1" ></div>
<script type="text/javascript">
  var div1 = document.getElementById("box1");
  //绑定事件的第二种方式
  div1.onclick = fn;  //注意,这里是fn,不是fn()。fn()指的是返回值。
  //单独定义函数
  function fn() {
    alert("我是弹出的内容");
  }
</script>

注意上方代码的注释。绑定的时候,是写fn,不是写fn()。fn代表的是整个函数,而fn()代表的是返回值。

方式三:行内绑定

<!--行内绑定-->
//注意第一行代码,绑定时,是写的"fn()",不是写的"fn"。因为绑定的这段代码不是写在js代码里的,而是被识别成了字符串。
<div id="box1" onclick="fn()"></div>
<script type="text/javascript">
  function fn() {
    alert("我是弹出的内容");
  }
</script>

3、事件驱动程序

<style>
    #box {
      width: 100px;
      height: 100px;
      background-color: pink;
      cursor: pointer;
    }
  </style>
</head>
<body>
<div id="box" ></div>
<script type="text/javascript">
  var oDiv = document.getElementById("box");
  //点击鼠标时,原本粉色的div变大了,背景变红了
  oDiv.onclick = function () {
    oDiv.style.width = "200px";  //属性值要写引号
    oDiv.style.height = "200px";
    oDiv.style.backgroundColor = "red";  //属性名是backgroundColor,不是background-Color
  }
</script>

上方代码的注意事项:

  • 在js里写属性值时,要用引号
  • 在js里写属性名时,是backgroundColor,不是CSS里面的background-Color。记得所有的像css属性的text-*,line-*、backgroun-*等在js中都写成驼峰

鼠标点击变化颜色:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
      .box{         /*class*/
        width:100px;
        height:100px;
        background-color:green;
      }
    </style>
  </head>
  <body>
    <div class="box" id="box">alex</div>
  </body>
  <script type="text/javascript">
    var oDiv = document.getElementById('box');
    var isGreen =true;
    oDiv.onclick=function(){
      console.log(oDiv.style);
    if (isGreen){
      oDiv.style.backgroundColor='red';
      isGreen=false; //通过改变isGreen的值来控制鼠标点击的效果
    }else{
      oDiv.style.backgroundColor='green';
      isGreen=true;
    }
    }
  </script>
</html>
/*一个鼠标点击就是一个事件*/

onload事件

当页面加载(文本和图片)完毕的时候,触发onload事件。

<script type="text/javascript">
  window.onload = function () {
    console.log("完毕"); //等页面加载完毕时,打印字符串
  }
</script>

效果:鼠标悬停发生事件,将鼠标放在图片1上面变成了图片2

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <script>
    //window.onload页面加载完毕以后再执行此代码
    window.onload = function () {
      //需求:鼠标放到img上,更换为另一张图片,也就是修改路径(src的值)。
      //步骤:
      //1.获取事件源
      //2.绑定事件
      //3.书写事件驱动程序
      //1.获取事件源
      var img = document.getElementById("box");
      //2.绑定事件(悬停事件:鼠标进入到事件源中立即出发事件)
      img.onmouseover = function () {
        //3.书写事件驱动程序(修改src)
        img.src = "2.jpg";
//        this.src = "image/jd2.png";
      };
    }
  </script>
</head>
<body>
  <img id="box" src="1.jpg" style="cursor: pointer;border: 1px solid #ccc;"/>
</body>
</html>

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
Mar 21 Javascript
JQuery 学习笔记01 JQuery初接触
May 06 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
Jan 12 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
Nov 08 Javascript
关于Javascript作用域链的八点总结
Dec 06 Javascript
JavaScript编写简单的计算器
Nov 25 Javascript
vue 自定义指令自动获取文本框焦点的方法
Aug 25 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
May 21 Javascript
Vue侦测相关api的实现方法
May 22 Javascript
JS实现数据动态渲染的竖向步骤条
Jun 24 Javascript
浅谈vue-props的default写不写有什么区别
Aug 09 Javascript
JavaScript事件的委托(代理)的用法示例详解
Feb 18 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
Dec 16 #Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
Dec 16 #Javascript
javascript自定义右键菜单插件
Dec 16 #Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 #Javascript
js实现数字滚动特效
Dec 16 #Javascript
NUXT SSR初级入门笔记(小结)
Dec 16 #Javascript
js实现内置计时器
Dec 16 #Javascript
You might like
PHP递归算法的详细示例分析
2013/02/19 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
javascript实现日历效果
2019/06/17 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
非常漂亮的js烟花效果
2020/03/10 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
python迭代器的使用方法实例
2013/11/21 Python
python+pyqt5实现24点小游戏
2019/01/24 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
python中如何写类
2020/06/29 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
趣味活动策划方案
2014/02/08 职场文书
国际金融专业自荐信
2014/07/05 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
天坛导游词
2015/02/02 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
2015双创工作总结
2015/07/24 职场文书
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP