调用内部函数参数的方法不被识别为函数?

时间:2014-01-02 16:20:43

标签: javascript jquery

我正在尝试遍历输入框列表,以便在输入更改时激活JQuery自动完成功能。以下是相关代码:

for(i=0;i<30;i++)
        {
                $("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").value(), i));
        };

但是我收到了这个错误:

TypeError: ($("#_Q6_Q" + i) + "_Q3_C").value is not a function.

我不知道如何解决这个问题。

编辑1:我将$添加到函数参数中,但尚未解决问题(之前就已存在)。

做一些挖掘导致我尝试从.value()中删除()。该函数现在通过而没有错误。但它也没有做任何事情。代码现在看起来像这样:

for(i=0;i<30;i++)
        {
                $("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").value(), i));
        };

5 个答案:

答案 0 :(得分:2)

我想你可能意味着:

$(("#_Q6_Q" + i) + "_Q3_C")

所以它是

$("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").value(), i));

答案 1 :(得分:2)

我认为你缺少你的jQuery函数调用者($)。此外,如果您获得jQuery集合的值,则方法为val() - value是DOM元素的属性:

$("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").val(), i));
                                                 ^
                                             just here

获取DOM元素的值可以这样完成:

$("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").get(0).value, i));

又一个编辑

我刚刚意识到,你需要在change()方法中使用匿名函数:

$("#_Q6_Q" + i + "_Q3_C").change(function(){
    transportChange($("#_Q6_Q" + i +"_Q3_C").val(), i)
});

否则在附加事件时调用该函数,而不是在触发事件时调用。祝你好运。

答案 2 :(得分:2)

("#_Q6_Q" + i) String ,因此(("#_Q6_Q" + i) + "_Q3_C") String ,因此此代码正在尝试访问'string'.value 未定义,因此您尝试执行undefined()会导致错误。

也许您打算先将字符串传递给jQuery

答案 3 :(得分:2)

您没有调用任何功能。如果 .value()应该来自transportChange,那么您必须将括号更改为以下内容:

transportChange("#_Q6_Q" + i +"_Q3_C").value()

或者你可能只是缺少$ function(jquery),所以也许你应该把代码变成这个:

transportChange($("#_Q6_Q" + i +"_Q3_C").value(), i)

我们无法完全理解您的代码。

答案 4 :(得分:2)

value DOM 元素的属性 - 您正在使用jQuery对象,因此您可能正在寻找的函数是:$('#id').val() - 或者您可以参考直接使用:$('#id')[0].value

的原生元素