2013-09-24 31 views
0

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

我检查了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(); 
    } 
} 
+0

其中nimbus_flash_red(); ..? –

+0

@Sudhir,它是另一个JavaScript文件的一部分。应该包含在这个js文件中吗?我的范围并不大。 –

回答

3

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

我想你的意思$("#nimbus_char")

+0

是的!我是一个流浪汉。非常感谢。 :) –

0

这可能是因为你写getElementsById(与小号)的事实,而不是的getElementById(),这实际上是在文档中,而不是jQuery的。

尝试使用相同的代码,在第一块中来访问元素:

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