for循环添加的闭包问题】的更多相关文章

function test(){ var arr = []; for (var i=0;i;i++){ arr[i] = function(){ console.log(i); } } return arr; } var myArr = test(); for (var i=0;i<myArr.length;i++){ myArr[i](); //结果为10个10 } 结果分析: 这是一个典型的闭包问题: 特点:arr[i] = function(){ console.log(i);  } 中保…
我们先看一个正常的for循环,普通函数里面有一个for循环,for循环结束后最终返回结果数组 function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i] = i; } return arr; } alert(box()) //正常情况不需要闭包,就可以达到预期效果,输出结果为一个数组0,1,2,3,4 有时我们需要在for循环里面添加一个匿名函数来实现更多功能,看下面代码 //循环里面包含闭包函数 function box(){ var…
<ul> <li>男</li> <li>女</li> <li>老</li> <li>少</li> </ul> 使用js为多个未知数量的li循环添加事件的时候很容易想到如下代码 for( var i= 0,lis = document.getElementsByTagName("li"),len=lis.length; i<len;i++){ lis[i].onc…
1.需求 给下面每个按钮增加事件 <ul id="list"> <li>按钮1</li> <li>按钮2</li> <li>按钮3</li> <li>按钮4</li> <li>按钮5</li> </ul> 本能的做法就是直接循环添加,如下 var list_obj = document.getElementsByTagName('li'); f…
还是昨天的那个简单的小项目,已经花了一天的时间了 - - .从&&的用法,到CSStext,到今天马上要谈的闭包(closure),通过一个小东西,真真发现了自己的各方面不足.昨天发完源码之后,自己手写一遍,还是碰到了一些问题,最主要的就是for循环中的闭包问题. 这是我之前的代码,大致就是这样: for(var i = 0;i<=oBtn.length;i++){ oBtn[i].onclick=function(){ change_style(oDiv,oAttr[i],oVal…
代码: <td style="padding-left: 10px;"> <select id="ddl_picture_3"> <!--循环添加1---> <script> ; i <= ; i++) { document.write("<option value= r" + i + "'>" + i + "</option>"…
经常会遇到给元素循环添加class的效果,例如下面这个图 每个模块的背景色和图标都不相同,但是呢,模块的数量又不确定,说不定有几十个,那我不能设计几十个图标吧,所以,可以做成每9个一循环,也就是第10个与第1个的样式相同,第11个与第2个的样式相同,依次类推. 还有表格中也经常遇到: 给表格的每一行设置背景色,每5行循环一次,表格的行数自然也是不确定的. 所以就需要几行js代码,例用for循环,给元素循环添加class.代码很简单,就是每次写的时候,总是在循环代码中调试,到底是从0开始?还是从1…
加载的时候改变select的默认值,只需改变select的value值 $("#one").val(@ViewBag.val);//@ViewBag.val是要默认选中的值的value值,因为val和name是绑定的,只要改变val值就可以改变name值 2.jq循环添加select值 <select id="ss"></select> $.each(data,function(i,item){ $("<option>&…
鉴于新浪博客太渣,转到这来. 最近在工程设计时,使用list循环添加map对象发现,最终全部变为最后一个map的值,但是list的数值还是正确的,也就是说添加了N(list长度或者说循环的次数)个相同的map对象(均为最后一个).   进行修改时猜测应该是引用和值传递差异造成的,于是将List和map的声明和初始化一同移进了for循环体内,但发现,循环体外面仍然要使用(setAdapter()方法,用作显示ListView控件数据),于是将此方法也移入循环体内,再次发现会只显示最后一条map对象…
问题:java开发时,当我们使用List.add();循环添加数据,有时会出现前面添加的数据会被后面覆盖的现象.这是怎么回事尼? 会覆盖数据的代码 package com.boot.test; import lombok.Data;import java.util.ArrayList;import java.util.List; @Datapublic class StudentVo { private String name; private String age; public static…
先在前台获取到所有要添加信息的Id $('.imgid').each(function () {                     if ($(this).attr("src").toLowerCase() == "/style/img/yes.png") {                         values += $(this).attr("value") + ",";                   …
1.引子 相信很多初学js的人,都遇到这样一种情况:想要给一堆按钮添加各自的事件,比如点击第i个按钮时,弹出i这个值.理所当然地,我们会这样写: var buttons = document.getElementsByTagName("button"); //假设一共有8个按钮 for(var i = 0; i < buttons.length; i++) { buttons[i].onclick = function() { alert("我的index是"…
HTML代码: <button type='button' class='btn' id='1'>按钮1</button> <button type='button' class='btn' id='2'>按钮1</button> <button type='button' class='btn' id='3'>按钮1</button> <button type='button' class='btn' id='4'>按钮…
来源:http://www.108js.com/article/article1/10177.html?id=899 第一次接触这个问题还是在我刚开始学js的时候,当时就是一头雾水,时隔一年多了,突然又想起了这个问题,在这个春气盎然的周末,我就坐下来研究下并把结果和大家分享下: 先看代码:demo.html <!DOCTYPE HTML>  <html>   <head>    <meta charset="gbk"/>    <t…
比如页面上有一个ul,数个li,现在给li添加点击事件. var li = document.getElementsByTagName("li"); for(var i = 0; i < li.length; i++) { li[i].addEventListener("click",function () { console.log(i); }) } 但是,这样写之后我们发现,点击任何一个li,打印的值都为5,这是因为闭包中共用i值,而i的值由于执行for循…
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .page{border: 1px red solid;} .up{width:300px;height:50px;} .a{width:90px;height:50px;float: left;bo…
在小程序中为了实现一个<swiper-item>中添加多个内容重复的标签,那就需要使用wx:for循环.如果按小程序的简易教程,循环加在block中,而swiper-item放在里面.所有数据都会遍历到每一个swiper-item中.这不是我们想要的. 只需要把<block>放入<swiper-item>中就可以,把循环数据绑定到block上就可以了. 代码: <!--导航部分轮播图--> <swiper class="navban"…
在阿里巴巴Java开发手册中,有这样一条规定: 但是手册中并没有给出具体原因,本文就来深入分析一下该规定背后的思考. 一.foreach循环 foreach循环(Foreach loop)是计算机编程语言中的一种控制流程语句,通常用来循环遍历数组或集合中的元素. Java语言从JDK 1.5.0开始引入foreach循环.在遍历数组.集合方面,foreach为开发人员提供了极大的方便.通常也被称之为增强for循环. foreach 语法格式如下: for(元素类型t 元素变量x : 遍历对象ob…
正常添加,v-model,修改所有循环会得到一样的结果! 定义一个users[]的数组,不要定义全局的user,而是要在Vue里面的方法里定义局部的变量添加.…
一.问题来源: 接触Openlayers 一段时间了,最近做了一个农业产业系统,项目中涉及到产业图例,最后考虑用canvas来绘制图例图像.当中带图片的图例移动时,图片会实现闪烁留白情况.闪烁是因为绘制图片本身的复杂性,导致canvas绘制频率和浏览器绘制频率不同步,出现图片出不来或者延迟出现,这过程中间就出现了空白显示为canvas底图颜色白色的情况.这里说的闪烁是,在单击地图移动图例时,文字前面的图片并没有出来.但是单击地图准备移动图例时别松开鼠标图片能出来,这个有点奇怪.... 有些解决方…
在vue中按条件为class动态添加直接使用:class="[{ active: isActive }, errorClass]"之类的表达式就可以 但是如果我们要为一个循环列表按条件添加不同的class又如何写呢 其实也很简单,我们只要把class按字符串拼接起来就可以了 <div class="section" :class="'pages'+item.activeClass" v-for="(item,index) in a…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> <li>香蕉</li> <li>苹果</li> <li>菠萝</li> <l…
标题信息:总结多个大整数,(使用add循环相加的功能) http://acm.hdu.edu.cn/showproblem.php? pid=1047 AC代码: /**  *大数的循环加法,转化为字符串循环相加到字符串为"0"  *注意s=="0"的情况,输出数据之间有空格  */ #include<iostream> #include<string> #include<cstdio> using namespace std;…
自己亲自使用的,绝对OK --添加数据declare i number; --用for实现 begin for i in 0 .. 500 loop insert into cust(custsn,type,code,pwd,provincecode,citycode,partycodetype,partycodevalue,partycitycode,identtype,identnum,name,brand,servicelevel,address) values(sys_guid(),'0…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>智能社——http://www.zhinengshe.com</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, ma…
// 问题1:判断下面一段代码运行的结果是什么? var data = [] for (var i = 0; i < 3; i++) { data[i] = function() { console.log(i) } } data[0]() data[1]() data[2]() /** * 运行结果 * 3 * 3 * 3 */ // 问题2:怎么修改代码可以使data[i]与i的值相同 // 方法1 使用闭包 for (var i = 0; i < 3; i++) { ;(function…
var temp=new handleData(); foreach(var t in data) { temp.DataValue = t.DataValue; temp.CreateTime = t.CreateTime; data1.Add(temp); } 最后的结果是data里面的数据都是一样的 原因:temp是引用类型,所以最后都是最后一次改变的temp的值 解决办法:在循环里每一次都加new一下 foreach(var t in data) { temp = new HandleD…
USE BookDiscuss                   DECLARE @num INT  DECLARE @numdiff INT  DECLARE @table  VARCHAR(50) DECLARE @sql VARCHAR(8000) SET @numdiff=3 SET @num=0  WHILE @num<@numdiff  BEGIN SET @table='DiscussPost_'+CAST(@num AS VARCHAR(10)); SET    @sql= '…
经常需要测试数据,写个存储过程方便日后使用. DROP PROCEDURE IF EXISTS add_member; DELIMITER $$ CREATE PROCEDURE add_member (IN loop_times INT) BEGIN ; WHILE member_account < loop_times DO ; INSERT INTO t_member ( member_name, member_password ) VALUES ( member_account, 'e1…
declare @i intset @i=1while @i<=1000begininsert into News_ITM(title,msg,subDateTime,author,imagePath) values('TITLE'+cast(@i as nvarchar(50)),'内容'+cast(@i as NCHAR),GETDATE(),'admin',null)set @i = @i +1end…