$.each()引用外部变量的问题

在写一个计算Table某列的值。大体代码如下:

function calTableSum(selector,colnum) {
    var total = 0;
 if(true !== $("#costlists tbody .nodata").exist()){
        var trs = $(selector).find("tr");
 $.each(trs,function () {
            console.log($(this).find('td:eq(colnum)').text());
 total += parseFloat($(this).find('td:eq(colnum)').text());
 })
    }
    return total;
}

遇到问题是each循环的回调函数不能访问到column参数。我知道在PHP语言时可以使用use关键字来引入外部变量,不知道这种情况下JQ或JS该怎么引入外部变量。

阅读 3.2k
2 个回答

问题已经解决,分享下完整代码。

/**
     * 计算表格列的总和
     * @param selector
     * @param index
     * @return float
     */
    function calTableSum(selector,column) {
        var total = 0;
        this.column = column;
        let self = this;
        if(true !== $("#costlists tbody .nodata").exist()){
            var trs = $(selector).find("tr");
            $.each(trs,function () {
                total += parseFloat($(this).find('td:eq('+self.column+')').text());
            });
        }
        return total;
    }

使用示例:
计算<table id="costlists">中第三列的值。(索引比我们实际查的列数少1,索引从0开始计数)

console.log(calTableSum('#costlists tbody',2));

exist()方法为JQuery扩展方法,主要判断DOM是否存在,这里主要判断table是否有数据。扩展方法:

//扩展jQuery方法用于检测DOM节点是否存在
(function ($) {
    $.fn.exist = function () {
        return $(this).length >=1?true:false;
    }
})(jQuery);

我想你问的应该是的时怎么在字符串中嵌入column

parseFloat($(this).find(`td:eq(${colnum})`).text())
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏