`
sbpya
  • 浏览: 615634 次
  • 性别: Icon_minigender_1
  • 来自: 杭州,长沙
社区版块
存档分类
最新评论

javascript动态循环添加行及行中的事件调用带参数的函数

阅读更多

今天在做一个动态循环添加行,并在新行添加onclick事件,调用一个带参数的函数时,遇到一个问题,当行添加完成后,行上的onclick事件触发时,传入的参数总是循环里最后一行传过来的参数,现将错误的写法和正确的写法记录如下:

 

错误的写法:

 

 var displaySelectResult = function(str) {
            alert(str);
        }

 

if ('' != search_result) {
                for (var i = 0; i < search_result.length; i++) {
                    var newTR = search_table_results.insertRow();
                    var newTD = newTR.insertCell();
                    newTD.innerText = search_result[i];
                    newTD.attachEvent("onclick", function() {
                        displaySelectResult(newTD.innerText);
                    });
                }
            }

 

这种写法得到的结果是,添加的所有新行的onclick事件调用时,总是alert出来search_result[最后一个索引]的值,不能正确地把循环中的每一个索引相应的传给每次添加的行

 

正确的写法则应如下:

 

if ('' != search_result) {
                for (var i = 0; i < search_result.length; i++) {
                    var newTR = search_table_results.insertRow();
                    var newTD = newTR.insertCell();
                    newTD.innerText = search_result[i];
                    newTD.onclick = function (str) {
                        return function()    {
                          alert(str);
                        };
                    }(search_result[i]);
                }
            }

 

这就是javascript中相关的闭包的概念范围.

 

分享到:
评论

相关推荐

    关于表格(table)中checkbox等相关事件操作(动态添加行+隔行换色等相关)(jquery)

    本篇将详细探讨如何利用jQuery实现表格中checkbox的相关事件操作,包括动态添加行、隔行换色、选中变色、全选与反选等功能。 首先,让我们了解jQuery的基本概念。jQuery是一个快速、简洁的JavaScript库,它简化了...

    js生成动态表格并为每个单元格添加单击事件的方法

    本文介绍的使用JavaScript动态生成表格并为每个单元格添加单击事件的方法是Web开发中一项基础而重要的技能。通过这种方式,我们可以根据实时数据创建表格,并允许用户与表格中的数据进行交互。这不仅使页面变得更加...

    c++调用javascript代码

    - **调用函数**:通过上下文对象,可以查找并调用JavaScript中的函数,传入参数。 - **数据交换**:C++和JavaScript的数据类型不同,需要进行适当的转换。例如,C++的整型、浮点型需要转换为JavaScript的Number,...

    js调用浏览器打印模块实现点击按钮触发自定义函数

    在探讨如何利用JavaScript调用浏览器的打印模块实现点击按钮时触发自定义函数的过程中,我们首先需要了解浏览器提供的打印API以及如何通过编程方式触发打印任务。现代浏览器通常提供了window.print()方法,该方法...

    js循环动态绑定带参数函数遇到的问题及解决方案[转]

    本文将详细介绍在JavaScript中循环动态绑定带参数函数时可能遇到的问题,并提供解决方案。 首先,我们来看看不带参数的事件绑定方法,使用attachEvent方法,如下所示: ```javascript document.getElementById(...

    JavaScript函数的特性与应用实践深入详解

    在创建函数时,JavaScript引擎会为每个函数添加两个隐藏属性:一个是函数上下文(也称为调用者或this值),另一个是实现函数功能的代码。函数对象还有一个特别的属性prototype,它指向一个新的对象,这个对象的...

    动态循环给onclick赋值(解决闭包问题)

    1. **立即调用的函数表达式 (IIFE)**:在每次循环中,创建一个IIFE,将当前循环变量作为参数传入。这样,每个IIFE都会有自己的作用域,其中的变量不会被其他函数共享。 ```javascript for (let i = 0; i ; i++) { ...

    javascript(函数查询chm+语法pdf)

    5. **函数式(Functional)**:JavaScript 支持函数式编程风格,允许将函数作为参数传递,也可以作为值返回。 **JavaScript函数查询CHM文件:** `JavaScript参考手册.chm` 是一个帮助文件,包含JavaScript的所有...

    JavaScript 函数式编程 (英文版)

    例如,`Array.prototype.map()`、`Array.prototype.filter()`和`Array.prototype.reduce()`都是JavaScript中的高阶函数,它们允许我们对数组进行操作,而无需显式地使用循环。 3. **闭包**:闭包是函数及其相关的...

    JavaScript ES6函数式编程入门经典_javascript_tall7cj_

    这样,当调用函数时未传递该参数,其值就会自动设为默认值,简化了函数调用的逻辑。 ES6引入了模板字面量(Template literals),使用反引号(`)包围字符串,支持字符串插值,例如 `${expression}`。这使得创建...

    JavaScript函数式编程1

    在JavaScript中,由于其动态类型和第一类函数特性,使得函数式编程成为可能。下面将详细介绍一些核心的函数式编程概念和在JavaScript中的应用。 1. **第一类函数**:在JavaScript中,函数是一种值,可以被赋给变量...

    关于JS中setTimeout()无法调用带参函数问题的解决方法.docx

    然而,一个常见的问题是在尝试使用`setTimeout()`调用带参数的函数时,参数往往无法正确传递。这是因为`setTimeout()`默认只接受一个函数引用和一个延迟时间作为参数,而不直接支持传递额外的参数。这个问题可以通过...

    javascript中函数作为参数调用的方法

    这行代码时,JavaScript引擎会暂时离开for循环,跳到传递给eachMap方法的匿名函数中执行。需要注意的是,在这个匿名函数执行之前,变量attr是没有值的。 4. 从匿名函数返回后,attr的值已经被赋予了对象中的某个键...

    JavaScript的函数式编程基础指南

    这些函数可以被传递给其他函数,例如在高阶函数中,也可以作为其他函数的结果返回。这种能力使得JavaScript具备了函数式编程的基本特征。 其次,JavaScript支持词法作用域和闭包,这是函数式编程中重要的概念。闭包...

    javascript控制增删行

    在IT领域,特别是前端开发中,JavaScript是一种广泛使用的编程语言,用于实现网页的动态功能。在给定的代码示例中,我们看到了一个利用JavaScript控制HTML表格增删行的实例,这在处理需要用户动态输入多条记录的场景...

    Javascript动态网页(实例版)

    包括变量声明(var关键字)、数据类型(如字符串、数字、布尔值、对象等)、控制流程(if...else语句、for循环、while循环)以及函数的定义与调用。理解这些基础概念是构建任何JavaScript程序的基石。 其次,DOM...

    javascript写的特效图片循环显示........

    在本文中,我们将深入探讨如何使用JavaScript实现特效图片的循环显示,这是网页设计中常见且重要的功能,可以提升用户体验。 首先,我们需要理解基本的HTML结构来展示图片。一个简单的HTML图片标签如下: ```html ...

    JS中获取函数调用链所有参数的方法

    循环中,将前一个函数的参数转换为数组并添加到`result`数组中,之后,继续向上追溯调用链,直到没有更多调用者为止。 下面是具体的代码实现: ```javascript function getCallerArgument() { var result = []; ...

    JavaScript回调函数面试题.zip

    - **错误处理**:在回调函数中,错误处理通常通过在回调函数的第一个参数接收错误对象(如`err`)来实现。如果没有错误,则`err`为`null`。 **5. 高阶函数与回调** 高阶函数是可以接受一个或多个函数作为参数,...

Global site tag (gtag.js) - Google Analytics