2014-02-21 131 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]