this,当前触发事件的标签

在绑定事件中的三种用法:
  a. 直接HTML中的标签里绑定 onclick="fun1()";
  b. 先获取Dom对象,然后利用dom对象在js里绑定;
    document.getElementById('xx').onclick
    document.getElementById('xx').onfocus

  c. w3c 规定中的addElementListener

a. 第一种绑定方式 dom 0
<input id='i1' type='button' onclick='ClickOn(this)'>

  function ClickOn(self){

    self.style.width="200px";
    // self 当前点击的标签
  }

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.hide{
display: none;
}
.item .header{
background-color: #2459a2;
color: white;
height: 35px;
line-height:35px;
}
</style>
</head>
<body>
<div style="height: 48px;"></div>
<div id="i1" style="width: 300px;">
<div class="item">
<div onclick="menu(this)" class="header">菜单1</div>
<div class="content hide">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
<div class="item">
<div onclick="menu(this)" class="header">菜单2</div>
<div class="content hide">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
<div class="item">
<div onclick="menu(this)" class="header">菜单3</div>
<div class="content hide">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
</div>
<script type="application/javascript">
function menu(nid) {
var tag = nid.parentElement;
console.log(tag.parentElement.parentElement);
for (var i=0;i<tag.parentElement.children.length;i++) {
tag.parentElement.children[i].children[1].classList.add('hide');
}
tag.children[1].classList.remove('hide');
} </script>
</body>
</html>

b. 第二种绑定方式 dom 1
<input id='i1' type='button' >
  document.getElementById('i1').onclick = function(){

    this.style.width="200px";
    // this 代指当前点击的标签
  }

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.hide{
display: none;
}
.item .header{
background-color: #2459a2;
color: white;
height: 35px;
line-height:35px;
}
</style>
</head>
<body>
<div style="height: 48px;"></div>
<div id="i1" style="width: 300px;">
<div class="item">
<div class="header">菜单1</div>
<div class="content hide">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
<div class="item">
<div class="header">菜单2</div>
<div class="content hide">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
<div class="item">
<div class="header">菜单3</div>
<div class="content hide">
<div>内容1</div>
<div>内容2</div>
<div>内容3</div>
</div>
</div>
</div>
<script type="application/javascript">
var tag = document.getElementById('i1');
for (var i=0;i<tag.children.length;i++){
tag.children[i].onclick = function () {
for(var i=0;i<tag.children.length;i++){
tag.children[i].children[1].classList.add('hide');
}
this.children[1].classList.remove('hide');
}
}
</script>
</body>
</html>

c. 第三种绑定方式 dom 2

  obj.addElementListener("事件","匿名函数",true/false);  true/false可以省略,默认是false冒泡模式,true为捕捉模式,他们的作用是当有一个事件可以有多个标签响应时,响应的顺序

  false 先从最内侧的子标签响应,true则刚发相反。

  

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#main {
background-color: red;
width: 300px;
height: 400px;
}
#content {
background-color: deeppink;
width: 150px;
height: 200px;
}
</style>
</head>
<body>
<div id="main">
<div id="content"></div>
</div>
<script>
var mymain = document.getElementById('main');
var mycontent = document.getElementById('content');
//mymain.addEventListener("click",function(){console.log('main1')});
//mymain.addEventListener("click",function(){console.log('main2')}); //可以同时执行多个函数
mymain.addEventListener("click",function(){console.log('main')},true);
mycontent.addEventListener("click",function(){console.log('content')},true);
</script>
</body>
</html>

js this详解,事件的三种绑定方式的更多相关文章

  1. Dom事件的三种绑定方式

    1.事件 2.  onclick, onblur, onfocus, 需求:请写出一个行为,样式,结构,相分离的页面.   JS,   CSS,  HTML, 示例1,行为结构样式粘到一起的页面: & ...

  2. v-bind绑定属性样式——class的三种绑定方式

    1.布尔值的绑定方式 <div id="demo"> <span v-bind:class="{‘class-a‘:isA ,‘class-b‘:isB ...

  3. 手把手教你实现三种绑定方式(call、apply、bind)

    关于绑定首先要说下this的指向问题. 我们都知道: 函数调用时this指向window 对象调用函数时this指向对象本身 看下面得例子: // 1 function test(){ const n ...

  4. js&jquery:添加事件的三种方法和常用的一些事件

    一.添加事件的方法 1.EventTarget.addEventListener添加 获取事件目标元素,通过addEventListener函数添加 // Assuming myButton is a ...

  5. python selenium 三种等待方式详解[转]

    python selenium 三种等待方式详解   引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待 ...

  6. C++的三种继承方式详解以及区别

    目录 目录 C++的三种继承方式详解以及区别 前言 一.public继承 二.protected继承 三.private继承 四.三者区别 五.总结 后话 C++的三种继承方式详解以及区别 前言 我发 ...

  7. EF三种编程方式图文详解

    Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天简单看一下 ...

  8. js 动态加载事件的几种方法总结

    本篇文章主要是对js 动态加载事件的几种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助   有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添 ...

  9. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

随机推荐

  1. SQL注入之Sqli-labs系列第二十八关(过滤空格、注释符、union select)和第二十八A关

    开始挑战第二十八关(Trick with SELECT & UNION) 第二十八A关(Trick with SELECT & UNION) 0x1看看源代码 (1)与27关一样,只是 ...

  2. Java 经典面试题 —— 性能

    1. 性能 String.StringBuffer 与 StringBuilder 两个字符串相加,str1+str2,相当于执行: StringBuilder strBuilder1 = new S ...

  3. 【计算机视觉】欧拉角Pitch/Yaw/Roll

    Pitch: 俯仰角: Yaw: 偏航角或者航向角: Roll: 横摆角或者翻滚角: 这几个角度是这样定义的,至于坐标系不同,则对应不同的XYZ轴及其方向: 1. https://en.wikiped ...

  4. 使用httputil中ReverseProxy反向代理遇到的坑

    坑描述,当POST ContentType=="application/x-www-form-urlencoded"时,反向代理报错:http: proxy error: http ...

  5. Unity 灯光探针用法教程

    Unity 灯光探针用详解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  6. hdoj-1068(二分图的最小点覆盖)

    题目 1  问题转化: 求二分图最小点覆盖(覆盖所有的边) 2  问题的解决: 二分图最小点覆盖==其最大匹配数 3   证明: 链接 =#include <bits/stdc++.h> ...

  7. lesson8-图像问答-小象cv

    QA即图像问答:覆盖最全面的AI,ai完备性 动态模型:不同任务需要不同模型 or 不同细分任务需要不同模型参数 数据集: 1)VQA,显示图片+抽象场景:每个问题给10个不同答案:含有无图片答案(考 ...

  8. nginx安装,配置,并可以放静态文件教程

    简单介绍一下:nginx是一个高性能的HTTP和反向代理的服务器.能有处理最高5,0000的并发量,是新兴的一个代理服务器.中国大陆使用nginx网站用户有:百度.京东.新浪.网易.腾讯.淘宝等. 安 ...

  9. HDU 2048:神、上帝以及老天爷(错排公式,递推)

    神.上帝以及老天爷 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  10. Guava Cache 总结

    想对Guava cache部分进行总结,但思索之后,文档才是最全面.详细的.所以,决定对guava文档进行翻译. 英文地址如下:https://github.com/google/guava/wiki ...