2013-09-24 53 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")

相關問題