HTML事件处理程序---内联onclick事件
HTML事件处理程序绑定方法:
<input type="button" value="click me" onclick="show(this,type,event)"> ---代码1 // 点击按钮谷歌下输出:[input, "button", MouseEvent]
事件在DOM之前定义:
function show() { ---代码2
console.log(Array.prototype.slice.call(arguments));
}
之前一直朦朦胧胧,不知道onclick中绑定的show事件是怎么传参数的~~~
show事件一般我们知道的是可以传两个参数:this和event,分别是绑定的这个DOM对象、发生的事件
但是这种绑定事件的原理实际上是这样的:
function(){ ---代码3
with(document){
with(this){
// 元素属性值
}
}
}
在代码1中,我传了type参数,实际上访问的正好是this.type,就是当前DOM元素的type属性。DOM0级绑定事件的原理就是代码3描述的,综合起来可能就类似这样:
传递的参数a,先在this中找,即this.a,如果未定义,就在document中找,找不到就报错
function show() { ---代码4
with(document){
with(this){
// 元素属性值
// 实际操作代码
}
}
}
代码1中传的第1个参数this,这个不用说,都知道是当前的DOM对象;第2个参数type,就是会在this中找,看this有没有这个属性,没有的话,就在document中找;第3个参数就是事件对象。函数里传参的顺序和内容可以随便改变的。
------------------------------第2种情况-----------------------------------
就是表单情况:
<form action=""> ---代码5
<input type="text" name="username">
<input type="button" value="click me" this="32" event="sd" onclick="show(this,getAttribute('this'),type,event,getAttribute('event'),username.value)"> // 点击按钮谷歌下输出:[input, "32", "button", MouseEvent, "sd",""]
</form>
表单情况会增加一层逻辑,就是this.form:
function(){
with(document){
with(this.form){
with(this){
// 元素属性值
// 处理代码
}
}
}
}
在代码5中,先说说username.value这个参数,就是表单中可访问的一个作用域this.form。传入参数会先看this有没有定义该属性,有就传入,没有的话,就在this.form中找,没有的话,最后在document中找。
另外,我故意在DOM上写了this、event的属性,看怎么样才能访问,会不会影响默认的this、event。验证后发现,自定义的属性只能通过getAttribute函数获取到(做这个验证只能说明我的js不扎实o(╥﹏╥)o)
HTML事件处理程序---内联onclick事件的更多相关文章
- WPF事件(一)内置路由事件
原文:WPF事件(一)内置路由事件 Windows是消息驱动的操作系统,运行其上的程序也遵照这个机制运行,随着面向对象开发平台日趋成熟,微软把消息机制封装成了更容易让人理解的事件模型,一个事件包含3个 ...
- input 的blur事件之后button的onclick事件不执行解决方案
最近发现网页程序中有个BUG,就是在input标签输入框中输入完数据后,直接点击“取消” 按钮的时候.出现网页崩死的情况: 经过小主酸菜我,各种方法的尝试后,找到一个初步可以解决的方案,在这里分享给大 ...
- js事件处理程序详解,html事件处理程序,dom0级事件处理程序,dom2级事件处理程序
博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/11/24/js%e4%ba%8b%e4%bb%b6%e5%a4%84%e7%90%86%e ...
- 注册事件处理程序onclick和addEventListener、attachEvent
一.设置HTML标签属性为事件处理程序(注意和下面的设置javascript对象属性为事件处理程序是不同的) 用于设置文档元素事件处理程序属性也能化成对应的HTML标签的属性.如果这样做,属性值应该是 ...
- XSS 前端防火墙(1):内联事件拦截
关于 XSS 怎样形成.如何注入.能做什么.如何防范,前人已有无数的探讨,这里就不再累述了.本文介绍的则是另一种预防思路. 几乎每篇谈论 XSS 的文章,结尾多少都会提到如何防止,然而大多万变不离其宗 ...
- js事件流、事件处理程序/事件侦听器
1.事件流 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档). 事件捕获 ...
- JavaScript 事件 事件流 事件对象 事件处理程序 回调函数 error和try...catch和throw
参考资料: 慕课网 DOM事件探秘 js事件对象 处理 事件驱动: JS是采用事件驱动的机制来响应用户操作的,也就是说当用户对某个html元素进行操作的时候,会产生一个时间,该时间会驱动某些函数 ...
- JS事件(一)事件流&事件处理程序
1.事件流描述的是从页面接收事件的顺序 IE和Netscape提出了几乎完全相反的事件流概念 IE:事件冒泡(由内而外) Netscape:事件捕获(由外向内) DOM2级事件规定事件流包括三个阶段: ...
- JS——事件流与事件处理程序
1.事件流:从页面中接收事件的顺序 1.1 IE :事件冒泡流1.2 Netscape :事件捕获1.3 DOM事件流 :事件捕获阶段——事件目标阶段——事件冒泡阶段DOM2级事件规定 :捕获阶段不会 ...
随机推荐
- Android功耗评测系列之——软件评测方案原理
软件评测方案也有很多种,但核心原理都是同一个. 软件评测方案中,所有Android功耗的统计都是通过代码进行估算,没有任何实体电路和硬件设备参与统计汇报. 这个配置文件存储在Android ...
- js 输入整数
1.我用 /^\+?[1-9][0-9]*$/ 貌似不对(小数也可以输入) 2.输入整数 n = /^[1-9]\d*$/; . -]\d*$/; //判断字符串是否为数字 if (!value) ...
- Magolor的数据结构作业
\(CodeForces 706E ~Working routine\) 给出一个矩阵,每次操作交换两个子矩阵,求最后状态. 使用链表存储,每次交换后,影响到的之后矩阵边缘的指针,暴力修改. \(~~ ...
- MySQL数据类型DECIMAL用法详解
MySQL DECIMAL数据类型用于在数据库中存储精确的数值.我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据. 要定义数据类型为DECIMAL的列,请使用以下语法: ...
- 如果全球的沙子都对你发起DDoS攻击,如何破?
IPv6已来 2016年6月1日开始,苹果规定所有提交至AppStore的应用必须兼容IPv6-only标准.可以预计,2018年底会有大量互联网资源.上网用户使用IPv6协议.这意味着,如果一个互联 ...
- 基于CentOS 7.3 安装Ceph Jewel 10.2.9
https://www.lijiawang.org/posts/intsall-ceph.html 配置说明: 采用了4台centos7.3系统的虚拟机,1台Ceph-Master作为安装节点,NTP ...
- PHP opendir() 函数
打开一个目录,读取它的内容,然后关闭: <?php$dir = "/images/"; // Open a directory, and read its contentsi ...
- <自动化测试>之<selenium API 用法2>
不知道之前的selenium API 用法1,有没有去练习, 个人认为线性代码还是要靠敲的, 后面的模块化除了多敲还需要一定的编程思想去理解, 今天下午不是很忙就给来这儿补充点selenium api ...
- 什么是grep -v grep??
1.grep 是查找含有指定文本行的意思,比如grep test 就是查找含有test的文本的行 2.grep -v 是反向查找的意思,比如 grep -v grep 就是查找不含有 grep 字段的 ...
- jmeter之-聚合报告&分析结果
Label:请求的名称 Sample:表示这次测试中一共发了多少个请求 Average:平均响应时间 median:中位数,也就是表示在所有请求响应时间中排在中间的那个响应的时间点,50%line 实 ...