• JavaScript笔记——事件


    事件一般是用于浏览器和用户操作进行交互。最早是 IE 和 Netscape Navigator 中出现, 作为分担服务器端运算负载的一种手段。直到几乎所有的浏览器都支持事件处理。而 DOM2 级规范开始尝试以一种复合逻辑的方式标准化 DOM 事件

    JavaScript 有三种事件模型:内联模型、脚本模型和 DOM2 模型

    内联模型

    这种模型是最传统接单的一种处理事件的方法。在内联模型中,事件处理函数是 HTML 标签的一个属性,用于处理指定事件。虽然内联在早期使用较多,但它是和 HTML 混写的, 并没有与 HTML 分离

    //在 HTML 中把事件处理函数作为属性执行 JS 代码
    <input type="button" value="按钮" onclick="alert('abc');" /> //注意单双引号
    //在 HTML 中把事件处理函数作为属性执行 JS 函数
    <input type="button" value="按钮" onclick="box();" /> //执行 JS 的函数,函数不得放到 window.onload 里面,这样就看不见了

    脚本模型

    由于内联模型违反了 HTML 与 JavaScript 代码层次分离的原则。为了解决这个问题,我 们可以在 JavaScript 中处理事件。这种处理方式就是脚本模型

    var input = document.getElementsByTagName('input')[0]; //得到 input 对象
    input.onclick = function () { //匿名函数执行
    alert('abc');
    };

    通过匿名函数,可以直接触发对应的代码。也可以通过指定的函数名赋值的方式 来执行函数(赋值的函数名不要跟着括号)

    input.onclick = box; //把函数名赋值给事件处理函数

    事件处理函数

    JavaScript 可以处理的事件类型为:鼠标事件、键盘事件、HTML 事件

    部分事件处理函数 :

    事件处理函数 影响的元素 何时发生
    onchange 输入框,选择框和文本区域 当改变一个元素的值且失去焦点时
    onclick 链接、按钮、表单对象、图像映射区域 当用户单击对象时
    ondblclick 链接、按钮、表单对象 当用户双击对象时
    onkeydown 文档、图像、链接、表单 当按键被按下时
    onkeyup 文档、图像、链接、表单 当按键被松开时
    onkeypress 文档、图像、链接、表单 当按键被按下然后松开时
    onload 主题、框架集、图像 文档或图像加载后
    onunload 主体、框架集 文档或框架集卸载后
    onmove 窗口 当浏览器窗口移动时
    onselect 表单元素 当选择一个表单对象时
    onsubmit 表单 当发送表格到服务器时
    onreset 表单复位按钮 单击表单的 reset 按钮

    所有的事件处理函数都会都有两个部分组成,on + 事件名称,例如 click 事件的事 件处理函数就是:onclick。对于每一个事件,它都有自己的触发范围和方式,如果超出了触发范围和方式,事件处理将失效

    1.鼠标事件,页面所有元素都可触发

    click:当用户单击鼠标按钮或按下回车键时触发

    input.onclick = function () { alert('abc'); };

    dblclick:当用户双击主鼠标按钮时触发

    input.ondblclick = function () { alert('abc'); };

    2.键盘事件

    keydown:当用户按下键盘上任意键触发,如果按住不放,会重复触发

    onkeydown = function () {
    alert('abc');
    };

    keypress:当用户按下键盘上的字符键触发,如果按住不放,会重复触发

    onkeypress = function () { alert('abc'); };

    keyup:当用户释放键盘上的键触发

    onkeyup = function () { alert('abc'); };

    3.HTML 事件

    load:当页面完全加载后在 window 上面触发,或当框架集加载完毕后在框架集上触发

    window.onload = function () { alert('abc'); };

    unload:当页面完全卸载后在 window 上面触发,或当框架集卸载后在框架集上触发

    window.onunload = function () { alert('abc'); };

    select:当用户选择文本框(input 或 textarea)中的一个或多个字符触发

    input.onselect = function () { alert('abc'); };

    change:当文本框(input 或 textarea)内容改变且失去焦点后触发

    input.onchange = function () { alert('abc'); };

    submit:当用户点击提交按钮在<form>元素上触发

    form.onsubmit = function () { alert('abc'); };

    reset:当用户点击重置按钮在<form>元素上触发

    form.onreset= function () { alert('abc'); };
  • 相关阅读:
    轻量级分布式任务调度框架(二、LTS编译、打包、部署)
    轻量级分布式任务调度框架(一、LTS简介、特点、工作流程)
    MySQL数据库学习一
    Navicat 连接 SQL Server 数据库,报错 08001
    noVNC 遇到一个错误: Uncaught TypeError: Cannot read property 'forEach' of undefined
    加强自己VPS服务器安全的一次经历
    Python 编码错误的本质和解决方案
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'data' at line 1
    requests爬虫请求报错:UnicodeEncodeError: 'latin-1' codec can't encode character 'u2026' in position 30
    docker无法删除镜像,Error: No such container,附docker常用命令
  • 原文地址:https://www.cnblogs.com/lz2017/p/6849751.html
Copyright © 2020-2023  润新知