难以理解的“未定义不是函数”错误 - 由“getElementsById”引起

时间:2013-09-24 05:06:46

标签: javascript if-statement undefined undefined-function

我花了最后几个小时试图调试这个Javascript。第一个if块执行得很好,但是当我尝试执行第二个if语句时,我得到一个“未定义的不是函数”错误消息。

我已经检查了JSLint和JSHint,并尝试将我的部分代码注释掉但无济于事。任何帮助将不胜感激。

var nimbus_char_count = 0;
var nimbus_line_count = 1;
var i = 2;
var j = 2;

//This block executes fine
function set_char(increment) {
    //Test success cases
    if (increment === 1 && nimbus_char_count < 3) {
        nimbus_char_count = nimbus_char_count + 1;
        $("#nimbus_char" + (nimbus_char_count - 1)).addClass("nimbus_drop");
    } else if (increment === -1 && nimbus_char_count > 0) {
        nimbus_char_count = nimbus_char_count - 1;
        $("#nimbus_char" + nimbus_char_count).removeClass("nimbus_drop");
    } else {
        nimbus_flash_red();
    }
}
//This block throws a "undefined is not a function"
function set_lines(increment) {
    if (increment === 1 && nimbus_line_count < 4) {
        nimbus_line_count = nimbus_line_count + 1;
        for (i = 2; i >= 0; i = i - 1) {
            $().getElementsById("#nimbus_char").addClass("nimbus_drop" + i);
        }
    } else if (increment === -1 && nimbus_char_count > 1) {
        nimbus_char_count = nimbus_char_count - 1;
        for (j = 2; j >= 0; j = j - 1) {
            $().getElementsById("#nimbus_char").addClass("nimbus_drop" + j);
        }
    } else {
        nimbus_flash_red();
    }
}

2 个答案:

答案 0 :(得分:3)

$().getElementsById("#nimbus_char")无效jQuery。

我认为你的意思是$("#nimbus_char")

答案 1 :(得分:0)

这可能是因为你写了getElementsById(带有 s )而不是getElementById(),这实际上是在文档中,而不是jQuery。

尝试使用与第一个块相同的代码来访问您的元素:

$("#id_goes_here")document.getElementById("id_goes_here")