javascript函数失败,出现错误,有关未定义变量的ReferenceError

时间:2015-06-12 18:50:37

标签: javascript jquery

我有以下代码:

var add_to_selected_users = function(row){
        var tds = row.find('td');
        var tr =$("<tr/>");
        tr.append("<td>" + tds.eq(0).text() + "</td>");
        tr.append("<td>" + tds.eq(1).text() + "</td>");
        tr.append("<td>" + tds.eq(2).text() + "</td>");
        tr.append("<td>" + tds.eq(3).text() + "</td>");
        tr.attr('id', id.substring(4));
        $('#selected_users').append(tr);
}

我正在尝试使用逻辑创建一个函数,该逻辑创建并向selected_users表添加一个新函数,因为我在代码中不止一次地执行此操作。

以下是我所做的功能:

    thisTR.siblings().filter(function() {
           if ($('td',this).eq(2).text() == $('td', thisTR).eq(2).text() ) {
               add_to_selected_users($(this));
           };
    });

所以我修改了主要代码,试图像这样调用这个函数:

tr.attr('id', id.substring(4));

问题

当我调用该函数时,我收到一条错误消息:

  

ReferenceError:未定义id

它在我执行此操作的函数中的代码行上失败了:

add_to_selected_users($(this));

当我将它嵌入if语句中而不是函数的一部分时,此代码不会失败。

我迄今为止所做的事

我试图改变我从这个方法调用方法的方式:

add_to_selected_users(this);

到此:

@:H

但这并没有什么不同。关于我可能缺少什么的任何建议?

3 个答案:

答案 0 :(得分:0)

如果您尝试使用行的ID:

tr.attr('id', row.attr('id').substring(4));

答案 1 :(得分:0)

没有定义id变量。

import javax.swing.JFrame;
import javax.swing.JButton;

public class Frame {

    public static int num1 = 0;

    public static void main(String[] args){

        JFrame f = new JFrame("Cookie Clicker");
        JButton b1 = new JButton(num1);

        f.setSize(500, 300);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(b1);
    }
}

这一行使用一个名为id的变量,试图在其上调用一个名为substring的函数。

tr.attr('id', id.substring(4));

您的代码中没有任何地方定义了“id”变量。

答案 2 :(得分:0)

您没有定义id,因为错误说明了。这意味着,在父作用域中缺少id。您可以通过

来防止错误
if(typeof id == 'undefined' || id == null) id = ...

这可以防止错误,您将再次定义id,因为这是需要做的事情。