JavaScript getElementById()的令人沮丧的问题

时间:2009-09-09 03:15:30

标签: javascript image-gallery getelementbyid

这是我被要求实施的图库

http://sandbox.leigeber.com/slideshow/

我已经切碎并且稍微改变它以便它更容易适应新网站的模板系统。

每当我运行它时,此行都会导致错误

ta=document.getElementById(thumbid); 

ta为空。我知道thumbid var的值确实存在于无序列表的Id中。

我已经试着想出现在至少半个小时内发生了什么,似乎无法确定它!

有人可以告诉我我做错了吗?

5 个答案:

答案 0 :(得分:2)

是的,代码看起来很好,并且从Firebug控制台运行相同的行工作正常,所以它让我想知道thumbs元素在运行时是否实际存在?它是在document.ready式处理程序中吗?如果在该页面上存在元素之前调用它,那么ta将为null,这将产生该错误。

答案 1 :(得分:2)

看起来幻灯片功能过早地被调用进行初始化。这将在DOM树准备好之前调用:

var slideshow = function() {
 ...
} ();

尝试在最后删除那个()。

答案 2 :(得分:2)

好消息! jQuery是用vanilla Javascript编写的!您应该能够复制出按ID获取元素的方法并使用它。

答案 3 :(得分:0)

有点不清楚thumbid应该有什么价值,但在我看来,你的问题是你的无序列表中的li项目没有id s,它们有{{1 }}第

调用value可以很好地获取列表本身的document.getElementById('thumbs')元素。

答案 4 :(得分:0)

在Safari 4第19行中,我遇到ta null的类型错误 这是由于您在指定ta时指出的行。

我喜欢将函数封装在闭包中,但我认为window.onload可以更改为jQuery like;实际上selecting the elements你正在寻找同样的东西,像t=$('ul#thumbs li')这样的东西应该可以做到。我不知道在var前面抛出ta是否会解决问题,但值得一试。