循环结构中JavaScript匿名函数用法实例解析

开发 前端
你对JavaScript匿名函数的概念是否熟悉,这里通过实例向大家描述一下循环结构中的JavaScript匿名函数的使用,希望对你的学习有所帮助。

JavaScript函数有很多值得学习的地方,本文和大家重点讨论一下循环结构中的JavaScript匿名函数的使用,相信你一定会感兴趣。

循环结构中的JavaScript匿名函数

先看下面的代码

  1. <SCRIPTLANGUAGESCRIPTLANGUAGE="JavaScript"> 
  2.  <!--  
  3.  functionDelete_Row(i)  
  4.  {  
  5.   alert(i);  
  6.  }  
  7.  functiontest()  
  8.  {  
  9.    for(vari=0;i<5;i++)  
  10.    {  
  11.       vartable11=document.getElementById("table11");  
  12.       vartr11=table11.insertRow();  
  13.       vartrstr="tr"+tr11.rowIndex;  
  14.       tr11.id=trstr;  
  15.     
  16.       tr11.ondblclick=function()  
  17.       {  
  18.            Delete_Row(trstr);  
  19.       };  
  20.     
  21.       vartd11=tr11.insertCell();  
  22.       td11.innerHTML=i;  
  23.       td11=tr11.insertCell();  
  24.       td11.innerText="我爱你";  
  25.       td11=tr11.insertCell();  
  26.       td11.innerText="笨蛋";  
  27.       td11=tr11.insertCell();  
  28.     
  29.   }  
  30.   }  
  31.  //--> 
  32.  </SCRIPT> 
  33.  <tableidtableid="table11"border=1> 
  34.  <tbody> 
  35.  <tr> 
  36.  <td>***列</td> 
  37.  <td>第二列</td> 
  38.  <td>第三列</td> 
  39.  </tr> 
  40.  </tbody> 
  41.  </table> 
  42.  <br> 
  43.  <inputtypeinputtype="button"value="GO"onclick="test()"> 
  44.  

   点击按钮之后,会在table11中插入5行,行的双击事件就是使用了JavaScript匿名函数。

  试想,点击第2行和第3行,你会看到什么,会是alert('tr0')和alert('tr1')吗,和你想的一样?

  很显然不是我想要的结果,而是弹出了alert('tr5'),真是有点儿怪哦!可以肯定的是问题肯定是出在JavaScript匿名函数上,有可能是这个行的双击事件都指向了同一下JavaScript匿名函数,不知道各位有什么看法?

  而把上述代码修改成如下代码,就会得到我们想到的结果。

  1. <SCRIPTLANGUAGESCRIPTLANGUAGE="JavaScript"> 
  2.  <!--  
  3.  functionDelete_Row(i)  
  4.  {  
  5.   alert(i);  
  6.  }  
  7.  functiontest()  
  8.  {  
  9.      for(vari=0;i<5;i++)  
  10.      {  
  11.    
  12.       vartable11=document.getElementById("table11");  
  13.         
  14.       vartr11=table11.insertRow();  
  15.       vartrstr="tr"+tr11.rowIndex;  
  16.       tr11.id=trstr;  
  17.     
  18.       tr11.ondblclick=f(trstr);  
  19.       vartd11=tr11.insertCell();  
  20.       td11.innerHTML=i;  
  21.       td11=tr11.insertCell();  
  22.       td11.innerText="我爱你";  
  23.       td11=tr11.insertCell();  
  24.       td11.innerText="笨蛋";  
  25.       td11=tr11.insertCell();  
  26.     
  27.     }  
  28.   }  
  29.   functionf(i)  
  30.   {  
  31.     return function()  
  32.     {  
  33.        Delete_Row(i);  
  34.     }  
  35.   }  
  36.  //--> 
  37.  </SCRIPT> 
  38.  <tableidtableid="table11"border=1> 
  39.  <tbody> 
  40.  <tr> 
  41.  <td>***列</td> 
  42.  <td>第二列</td> 
  43.  <td>第三列</td> 
  44.  </tr> 
  45.  </tbody> 
  46.  </table> 
  47.  <br> 
  48.  <inputtypeinputtype="button"value="GO"onclick="test()"> 
  49.  

【编辑推荐】

  1. 详细说明Javascript匿名函数技巧与文章
  2. JavaScript函数的定义及形式参数
  3. C#代码与JavaScript函数的相互调用
  4. JavaScript函数中arguments对象
  5. Javascript中CSS属性float特殊写法

 

责任编辑:佚名 来源: tech.ddvip.com
相关推荐

2009-11-25 10:52:22

PHP函数contin

2010-10-09 09:46:11

indexOf函数JavaScript

2010-10-08 14:31:46

Javascriptsplit函数

2010-09-08 11:06:49

CSSpaddingmargin

2010-07-16 17:04:38

Perl方法

2010-07-20 09:45:04

Perl继承

2010-07-16 08:47:53

Perl if语句

2010-07-19 14:20:57

Perl函数

2010-07-15 10:22:23

Perl控制结构

2010-08-20 14:58:26

CSSpadding

2010-07-15 15:54:10

Perl守护进程

2010-09-29 15:35:04

Item类J2ME

2010-09-09 13:25:52

DIVScroll

2010-07-12 10:15:11

UML对象图

2010-07-16 16:56:01

Perl构造函数

2010-07-19 14:13:41

Perl函数

2010-01-05 16:12:55

Javascript匿

2015-03-02 09:22:09

Javascript函数用法apply

2010-10-08 12:52:33

Javascriptreplace

2010-04-06 09:32:15

Oracle job
点赞
收藏

51CTO技术栈公众号