写js的一些思路及问题 采集

1利用循环给元素添加事件(例子:点击li,弹出当前li 的索引)

错误案例:

 1 <ul id="testUL">
 2     <li> index = 0</li>
 3     <li> index = 1</li>
 4     <li> index = 2</li>
 5     <li> index = 3</li>
 6 </ul>
 7 <div id="box">123333</div>
 8 <script>
 9     var nodes = document.getElementsByTagName("li");
10     for(i = 0;i<nodes.length;i++){
11         console.log(nodes[i]);   // 可以循环打印。。。
12         nodes[i].onclick = function(){
13             // onsole.log(nodes[i]);   //undefined
14             console.log(i);//值全是4
15         };
16     }
17     var box = document.getElementById("box");
18     for(var j=0; j<5;j++){    //循环完成之后,才触发的事件。
19         box.onclick = function () {
20             console.log(j); //
21         }
22     }
23 </script>

用闭包解决上述问题(正确案例)

 1 <ul id="testUL">
 2     <li> index = 0</li>
 3     <li> index = 1</li>
 4     <li> index = 2</li>
 5     <li> index = 3</li>
 6 </ul>
 7 <script>
 8     //循环绑定事件的时候闭包也很有用,关于闭包有个很经典的例子
 9     var add_the_handlers = function(nodes){
10         var helper = function(i){
11             return function(e){
12                 alert(i);
13             };
14         };
15         for(var i = 0;i<nodes.length;i++){
16             nodes[i].onclick = helper(i); //估计是点击的当前再传的值
17         }
18     };
19     add_the_handlers(document.getElementsByTagName("li"));
20 </script>
时间: 2024-08-11 01:36:35

写js的一些思路及问题 采集的相关文章

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

cocos2dx手写js绑定C++

这两天连续查阅了js绑定c++的非常多文章  , 有手动与自己主动两种方式 . 本来想用自己主动绑定的 , 可是NDK一直下载不下来.....就给算了 . 以下总结一下手动绑定的实现过程 : 一共三步 : 1 . 写原始 C++ 类 ( 一般放在自己定义类库里 ) 2.  用 C++ 逐个写 成员函数相应 的 绑定代码 ( 在自己定义类库中建立的manual_binding目录里) 3.  注冊所绑定过的函数( 在AppDelegate.cpp中 加入注冊函数 ) 4.  写js代码測试效果 1

手写js面向对象选项卡插件

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>无缝滚动</title>    <style type="text/css">        body,ul{margin: 0;padding: 0;}        li{list-style: none;}  

基于Arcgis for Js的web GIS数据在线采集简介

在前一篇博文"Arcgis for js之WKT和geometry转换"中实现了wkt和geometry之间的相互转化,博文原文地址为:http://blog.csdn.net/gisshixisheng/article/details/44057453.在本节,接上文,简单讲述基于Arcgis for Js的web GIS数据在线采集. 实现数据的在线采集,最主要的是数据的存储,即将采集到的数据的geometry对象保存下来,并后续可以转换为shp数据.在本文,我的处理方式为将前段绘

写jQuery和直接写JS的区别(转自馒头的博客)

jQuery能大大简化Javascript程序的编写,我最近花时间了解了一下jQuery,把我上手过程中的笔记和大家分享出来,希望对大家有所帮助. 要使用jQuery,首先要在HTML代码最前面加上对jQuery库的引用,比如: <script language="javascript" src="/js/jquery.min.js"></script> 库文件既可以放在本地,也可以直接使用知名公司的CDN,好处是这些大公司的CDN比较流行,

写js代码的时候应该注意的一些的小细节

在今天将为大家分享一下,在平时我们写js代码的时候应该注意的一些的小点.img1全局变量了解js的朋友应该知道全局变量就是在任何函数的外面声明的或是未声明直接简单使用的.下面来看一个例子function fn(){var a=b=0;}或许有好多朋友都觉得这两个都是局部变量,但这似乎不是你所想的那样.在这个例子中b是一个全局变量.这是为什么了?肯定有好多朋友也想不通,这是因为在js中赋值运算符是自右往左的,所以上面这个例子实际上是function fn(){var a=(b=0);}因此,在平时

同 一个页面,不同请求路径,如何根据实际场景写JS

场景:使用同一个“添加群成员”的页面来操作 建群页面:建群成功后,返回查看群成员页面.在建群过程中直接添加群成员并返回一个群名称的参数. 添加群成员页面:在巳有群内添加群成员,添加成功后,返回查看群成员页面. 分析: 使用同一个页面,调两种不同接口,从接口中可以看到,一个包含{groupId},另一个没有 建群的接口为:/chat/vindicate/group 添加群成员的接口为:/chat/vindicate/group/{groupId} 在eclipse中需要做两个页面的渲染工作,其中使

Asp.net mvc怎么在razor里写js代码

我试图在Razor里写JS代码,但是不行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <script type="text/javascript">   //some javascrpt code here to display map etc     //now add markers  @foreach (var item in Model) {

学写js Calender控件

好几个月没写博客了,一直在赶项目.项目现在终于处于稳定的状态,只是修修改改.作为后台程序员的我真是苦逼啊,从web到手机端接口我都得写,杂七杂八的事情...这两天终于闲下来了,没事儿看了一下关于js日期的一些函数,突然想到了日历控件,于是试着写了一个,作为后台程序员的我水平有限,大家抱着学习的态度看看我写的这个例子吧... 首先一个常用的日期函数:Date(year,month,day) var   date=new  Date(); 获取年份            var   year=thi