未捕获的TypeError:无法调用未定义的方法'split'

时间:2014-01-27 10:11:03

标签: javascript jquery html

在这个fiddle中有一个To按钮。当点击此按钮时,会出现一个对话框。从选择菜单默认选择users。如果我选​​择了一个检查此用户表中的框以及之后如果将下拉菜单更改为组,则从组表中选择一个复选框,然后{$ 1}}出现在consolse中。但是从头开始(不选择任何用户表的复选框)如果我更改为组表,然后选择一些复选框,然后上面的错误没有出现。可以告诉我如何解决这个问题。

以下是jquery代码

Uncaught TypeError: Cannot call method 'split' of undefined

1 个答案:

答案 0 :(得分:3)

因此,当您调用'collect_users_and_groups'函数时,代码将针对属于#mytable12的已检查复选框和属于#groupsTable1的已复选复选框执行(由于您应用每个复选框的选择器)。 即使您使用is_groups = false调用该函数,代码仍将通过此片段查看之前在#mytable12中选中的复选框:

if (is_groups) 
{
    //alert("to groups");
    var dataids = $(this).parent().attr("data-selected").split(",");
    alert("dataids  " + dataids);
}

因此,如果您之前在#mytable12中选中了一个复选框,则代码将返回$(this).parent()。attr(“data-selected”)的未定义,因为这些表没有这样的属性细胞

通过以下方式更改您的代码:

$('#mytable12 input:checked').each(function (i, elt)
{
    var name2 = $.trim($(this).parent().next().text());
    tos.push(name2);
});
$('#groupsTable1 input:checked').each(function (i, elt) {
    //alert("to groups");
    if (is_groups) {
        //alert("to groups");
        var dataids = $(this).parent().attr("data-selected").split(",");
        alert("dataids  " + dataids);
    }
    var name = $.trim($(this).parent().next().text());
    tos.push(name);
});
相关问题