2014-02-21 90 views
1

好吧,夥計們。我不知道爲什麼這不起作用。遵循一個例子,老師給了我們,並且據我所知,除了函數和變量名稱外,其它都是相同的......使用外部JavaScript文件,Dreamweaver表示沒有語法錯誤或其他任何類型的錯誤,但調試器火狐說TypeError: document.getElementById(...)[0] is undefined...這我不知道是什麼原因,但這裏是我的代碼:TypeError:document.getElementById(...)[0]未定義

的JavaScript

var caveboyanim = new Array(6); 
var curCaveBoy = 0; 

for (var i = 0; i < 6; ++i) { 
    caveboyanim[i] = new Image(); 

    caveboyanim[i].src = "images/caveboy" + i + ".png"; 
} 

function caveboyanimation() { 
    if (curCaveBoy == 5) 
     curCaveBoy = 0; 
    else ++curCaveBoy; 
    document.getElementById("caveboy")[0].src = caveboyanim[curCaveBoy].src; 
} 

HTML

<body onLoad="setInterval('caveboyanimation()', 1000);"> 

<img src="images/caveboy0.png" id="caveboy" alt="Image of a cave boy"> 

</body> 

回答

3

刪除[0]來自:

document.getElementById("caveboy")[0].src = caveboyanim[curCaveBoy].src; 

指數0用於與jQuery對象,以得到「真實」的文檔元素。但是你不在這裏使用JQuery,所以不需要它。

+1

TY!真的很沮喪:)現在我可以回到構建我的賭場啓動頁面:) – FunkyMonkey

2

返回document.getElementById()不是數組。使用:

document.getElementById("caveboy") 
+0

詳細說明,它被稱爲'getElementById',而不是'getElementsById'(注意它是單數,而不是複數),這與例如不同, 'getElementsByTagName'。這是有道理的,因爲你只能在一個頁面上有一個ID。 – Carpetsmoker

1

它沒有返回數組,所以你不能做[0]https://developer.mozilla.org/en-US/docs/Web/API/document.getElementById

順便說一下,看看jQuery。

+2

這個jQuery如何相關?他的老師顯然不教jQuery。順便說一下,看看Haskell。 –

+0

@JanTuroň我沒有說它是jQuery相關的,它只是一個提示。用jQuery這會更容易。但我回答了他的問題。 – Shahar

+0

剛剛學習JavaScript已經足夠困難,這位老師沒有真正教會我們什麼,生病等待JQuery ...大聲笑 – FunkyMonkey

0

在本地JavaScript:

document.getElementById("caveboy").src = caveboyanim[curCaveBoy].src; 

在jQuery中,你可以像這樣得到真正的DOM對象:

$("#caveboy")[0].src = caveboyanim[curCaveBoy].src; 

document.getElementById("caveboy")一樣$("#caveboy")[0]