簡體   English   中英

JavaScript的getElementById()令人沮喪的問題

[英]Frustrating issue with JavaScript's getElementById()

這是我被要求實施的畫廊

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

我已經將其切碎並稍作更改,因此它可以更輕松地適合新站點的模板系統。

每當我運行它時,此行都會導致錯誤

ta=document.getElementById(thumbid); 

ta為空。 我知道thumbid var的值確實以無序列表的ID的形式存在。

我試圖弄清楚現在至少半小時后發生了什么,而且似乎無法確定!

有人可以告訴我我在做什么錯嗎?

是的,代碼看起來不錯,並且可以從Firebug控制台運行相同的代碼行,所以讓我想知道thumbs元素在運行時是否確實存在? 它在document.ready -style處理程序中嗎? 如果在該元素存在於該頁面之前被調用,則ta將為null,這將導致該錯誤。

看起來slideshow函數被要求過早初始化。 這將在DOM樹准備好之前被調用:

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

嘗試最后刪除()。

好消息! jQuery用普通的Javascript編寫! 您應該能夠復制他們的方法來按ID獲取元素並使用它。

尚不清楚thumbid應該具有什么值,但是在我看來,您的問題是無序列表中的li項沒有id ,而它們具有value

調用document.getElementById('thumbs')可以很好地獲取列表本身的ul元素。

在Safari 4中,第19行拋出了關於ta的類型錯誤,該錯誤為null
這是由於您指出了ta被分配到的行。

我喜歡將函數封裝在閉包中的方式,但是我認為window.onload可以更改為更像jQuery的樣子 可以說,實際上是選擇要查找的元素 ,類似t=$('ul#thumbs li')應該可以解決問題。 我不知道在ta前面扔一個var是否可以解決任何問題,但是值得一試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM