javascript循环变量注册dom事件 之强大的闭包
//伪代码
for (var i=0; i<n; i++) {
addEvent(obj[i], "click", func(i));
}
结果出现了问题,所有的dom都被注册了 i=n 的时候的事件,查了一些资料,说是在循环过程过this被改变,注册过的事件也被随之改变,找到了一种解决方法;
for (var i=0; i<n; i++) {
(function (i){addEvent(obj[i], "click", function (){func(i);});})(i);
}
利用必包保持对变量的持久引用,很强大的说!
(如果您有更好的方法,请不吝赐教(*^__^*) 嘻嘻……)
相关推荐
-
浅谈JS闭包中的循环绑定处理程序
前几天工作中写前端js代码时,遇到了遍历元素给它添加单击事件.就是这个问题让我整整调了一个下午.最后还是下班回家,上网查资料才知道怎么解决的. (PS:之前也在<jQuery基础教程>第四版中看过讲循环绑定处理程序的内容,当时估计也没怎么用心看,所以没记起来.) 大神要是知道这类情况,可以关掉窗口,写这些主要是给像我一样的小白看的.谢谢! 先贴上错误的例子让大家看看.(例子里面用到jQuery,请导入jQuery库) 复制代码 代码如下: <!DOCTYPE html PUBLIC &q
-
浅谈JavaScript for循环 闭包
有个网友问了个问题,如下的html,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5. <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>闭包演示</title> <script type="text/javascript&quo
-
javascript闭包传参和事件的循环绑定示例探讨
今天看到一个javascript的题目,按常理循环绑定事件,但是得到的结果却不是想要的. 复制代码 代码如下: <a href="#">text</a> <br> <a href="#">link</a> <script> var as = document.getElementsByTagName('a'); for ( var i = as.length; i--; ) { as[i].on
-
javascript循环变量注册dom事件 之强大的闭包
今天遇到了这个问题: 复制代码 代码如下: //伪代码 for (var i=0; i<n; i++) { addEvent(obj[i], "click", func(i)); } 结果出现了问题,所有的dom都被注册了 i=n 的时候的事件,查了一些资料,说是在循环过程过this被改变,注册过的事件也被随之改变,找到了一种解决方法; 复制代码 代码如下: for (var i=0; i<n; i++) { (function (i){addEvent(obj[i], &
-
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
本文实例讲述了javascript使用for循环批量注册的事件不能正确获取索引值的解决方法.分享给大家供大家参考.具体分析如下: 可能不少朋友会遇到一个问题,那就是当使用for循环批量注册事件处理函数,然后最后通过事件处理函数获取当前元素的索引值的时候会失败,先看一段代码实例: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name=&q
-
javascript为按钮注册回车事件(设置默认按钮)的方法
本文实例讲述了javascript为按钮注册回车事件(设置默认按钮)的方法.分享给大家供大家参考.具体如下: 首先不得不说,在JS方面,自己真的是个不折不扣的菜鸟.对于JS以及一些JS框架如JQuery等JS框架,自己也只是处在简单应用的阶段,当然自己也在不断的学习当中,希望将来能跟大家分享更多JS方面的心得.今天先来点开胃的,说一下如何设置一个默认按钮,就是不管焦点在不在按钮上,只要按下回车,就等于触发了按钮的单击事件. 代码非常简单,要完成这个功能,只需几行代码: //为keyListene
-
谈谈我对JavaScript DOM事件的理解
什么是事件? 事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水.当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了.事件可能是用户在某些内容上的点击.鼠标经过某个特定元素或按下键盘上的某些按键.事件还可能是 Web 浏览器中发生的事情,比如说某个 Web 页面加载完成,或者是用户滚动窗口或改变窗口大小. 通过使用 JavaScript ,你可以监听特定事件的发生,并规定让某些事件发生以对这些事件做出响应. DOM与事件是JavaScript最核
-
理解javascript中DOM事件
首先,此文不讨论繁琐细节,但是考虑到读者的心灵感受,本着以积极向上的心态,在此还是会列举示例说明. 标题为理解DOM事件,那么在此拿一个简单的点击事件为例,希望大家看到这个例子后能触类旁通. 最初我们给页面实现点击,就像下面这样的简单操作. 先定义一个块如<div id="weiyuzhou">微宇宙</div>,之后在<script type="text/javascript"></script>内部实现id为we
-
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
先来看看现象: 复制代码 代码如下: <html> <head> <title>apply_and_call</title> </head> <body onload="init()"> <div id="testDiv" style="position: absolute; border: 1px solid gray; width:100px; height: 100px&q
-
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
将 DOM 0级事件处理程序和DOM2级事件处理程序 IE事件处理程序封装为eventUtil对象,达到跨浏览器的效果.代码如下: var eventUtil = { // 添加事件句柄 addEventHandler:function (element,type,handler) { if (element.addEventListener) { element.addEventListener(type, handler,false); }else if(element.attachEven
-
浅析四种常见的Javascript声明循环变量的书写方式
Javascript中的循环变量声明,到底应该放在哪儿? 习惯1:不声明直接使用 function loop(arr) { for (i = 0; i < arr.length; i++) { // do something } } 非常危险的使用习惯,一般情况下循环变量将成为window对象上的一个属性被全局使用,极有可能影响程序的正常逻辑实现. 需要着重提一下的是,在strict模式下,未声明变量而直接赋值的使用方式会直接抛出异常,早就该这么做啦!引用一下ecma-262标准附录C中的一段话
-
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
本文实例总结了Javascript DOM事件操作.分享给大家供大家参考,具体如下: 使用JavaScript可以对HTML页面上的各种事件进行监听,如鼠标点击/释放,鼠标悬停/离开,等等. 效果图: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &l
-
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
1.数据类型:JavaScript定义的数据类型有字符串.数字.布尔.数组.对象.Null.Undefined,但typeof有区分可判别的数据分类是number.string.boolean.object(null / array).function和undefined.undefined 这个值表示变量不含有值,null 可以用来清空变量 let a = 100; typeof a;//number a = undefined; typeof a;//undefined a = null;
随机推荐
- 在Docker容器中使用iptables时的最小权限的开启方法
- iis PHP安装脚本 PHPInstall.vbs V3.1
- 如何在网站级别动态更改主题
- Android笔记整理之常见错误及解决方案汇总
- PHP中Session可能会引起并发问题
- 关于C语言函数strstr()的分析以及实现
- Centos 6.4源码安装mysql-5.6.28.tar.gz教程
- js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
- thinkPHP实现表单自动验证
- Android开发学习笔记之通过API接口将LaTex数学函数表达式转化为图片形式
- 最新统计排名前十的SQL和NoSQL数据库排行榜
- SQLServer中求两个字符串的交集
- jquery(hide方法)隐藏指定元素实例
- jquery实现静态搜索功能(可输入搜索文字)
- Java策略模式的简单应用实现方法
- C#打印绘图的实现方法
- 基于Android自定义控件实现雷达效果
- 采用C#代码动态设置文件权限
- 特转载一高手总结PHP学习资源和链接.
- 学习Java的static与final关键字