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事件的更多相关文章

  1. WPF事件(一)内置路由事件

    原文:WPF事件(一)内置路由事件 Windows是消息驱动的操作系统,运行其上的程序也遵照这个机制运行,随着面向对象开发平台日趋成熟,微软把消息机制封装成了更容易让人理解的事件模型,一个事件包含3个 ...

  2. input 的blur事件之后button的onclick事件不执行解决方案

    最近发现网页程序中有个BUG,就是在input标签输入框中输入完数据后,直接点击“取消” 按钮的时候.出现网页崩死的情况: 经过小主酸菜我,各种方法的尝试后,找到一个初步可以解决的方案,在这里分享给大 ...

  3. 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 ...

  4. 注册事件处理程序onclick和addEventListener、attachEvent

    一.设置HTML标签属性为事件处理程序(注意和下面的设置javascript对象属性为事件处理程序是不同的) 用于设置文档元素事件处理程序属性也能化成对应的HTML标签的属性.如果这样做,属性值应该是 ...

  5. XSS 前端防火墙(1):内联事件拦截

    关于 XSS 怎样形成.如何注入.能做什么.如何防范,前人已有无数的探讨,这里就不再累述了.本文介绍的则是另一种预防思路. 几乎每篇谈论 XSS 的文章,结尾多少都会提到如何防止,然而大多万变不离其宗 ...

  6. js事件流、事件处理程序/事件侦听器

    1.事件流 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档). 事件捕获 ...

  7. JavaScript 事件 事件流 事件对象 事件处理程序 回调函数 error和try...catch和throw

    参考资料: 慕课网 DOM事件探秘    js事件对象 处理 事件驱动: JS是采用事件驱动的机制来响应用户操作的,也就是说当用户对某个html元素进行操作的时候,会产生一个时间,该时间会驱动某些函数 ...

  8. JS事件(一)事件流&事件处理程序

    1.事件流描述的是从页面接收事件的顺序 IE和Netscape提出了几乎完全相反的事件流概念 IE:事件冒泡(由内而外) Netscape:事件捕获(由外向内) DOM2级事件规定事件流包括三个阶段: ...

  9. JS——事件流与事件处理程序

    1.事件流:从页面中接收事件的顺序 1.1 IE :事件冒泡流1.2 Netscape :事件捕获1.3 DOM事件流 :事件捕获阶段——事件目标阶段——事件冒泡阶段DOM2级事件规定 :捕获阶段不会 ...

随机推荐

  1. MongoDB服务的安装与删除

    服务的安装: 在MongoDB的目录下创建两个文件夹 data和logs, 在通过cmd进入bin目录下,执行命令: mongod --dbpath "C:\Program Files\Mo ...

  2. 卸载Anaconda

    conda install anaconda-clean anaconda-clean --yes Anaconda 安装的时候在 .bash_profile中添加了变量: export PATH=& ...

  3. 【架构】Linux的架构(architecture)

    最内层是硬件,最外层是用户常用的应用,比如说firefox浏览器,evolution查看邮件,一个计算流体模型等等.硬件是物质基础,而应用提供服务.但在两者之间,还要经过一番周折. 还记得Linux启 ...

  4. mysql启动脚本-my

    #!/bin/sh PREFIX=/opt/mysql mysql_username="root" mysql_password=" mysql_port= functi ...

  5. (转)使用OpenGL显示图像(五)添加移动

    添加移动 编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/motion.html 转:http://hukai. ...

  6. js中文首字母数组排序

    js中文首字母数组排序 数组的排序js算法: var Pinyin = (function() { var Pinyin = function(ops) { this.initialize(ops); ...

  7. 52、saleforce 导入csv文件

    Load Data Using the Custom Object Import Wizard 1. 2. 3. 4. 5. 6.然后就导入成功了

  8. Windows 08R2_破解管理员密码

    目录 目录 破解Windows 08R2管理员密码 破解Windows 08R2管理员密码 将登录界面的功能链接变成cmd.exe的链接,通过CMD进入到目录C:\Windows\System32下, ...

  9. PHP面试 MySQL创建高性能索引考点

    MySQL索引 MySQL索引的基础和类型 索引的基础:索引类似于书籍的目录,要想找到一本书的某个特定篇章,需要查找书的目录,定位对应的页码 存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的 ...

  10. Area的使用

    本文转自-->王亮的博客文章[ASP.NET MVC 小牛之路]08 - Area 使用 文章引导 MVC路由解析---IgnoreRoute MVC路由解析---MapRoute MVC路由解 ...