2016-02-05 50 views
-1

的我試圖檢查所有輸入框,如果有它旁邊的圖像標籤包含某個特定圖像的位置,在它的src的財產。JS:無法讀取「SRC」未定義

var productThumb = document.getElementsByTagName("img").src; 
var inputs = document.getElementsByTagName("input"); 
for (var i = 0, max = inputs.length; i < max; i++) { 
    imgSrc = productThumb[i]; 
    if (inputs[i].type === 'checkbox' && imgSrc.indexOf("/img/folder/1/") === 0) 
     inputs[i].checked = true; 
} 

當我運行這段代碼,我得到了錯誤的稱號。哪裏不對?我是新來的JavaScript,所以我不知道我做錯了,但我認爲它必須是一些與var = productThumbimgSrc = productThumb[i]。什麼是聲明變量的正確方法?

+0

你必須把所有的圖像引用到一個數組,如果你希望能夠通過索引位置來訪問它們。 – Korgrue

+0

您的標題缺少無法閱讀的財產的名稱,這可能相當重要。謹慎更新? –

+1

這實際上是一個重複[這是什麼'getElementsByClassName'回來?(http://stackoverflow.com/questions/10693845/what-does-getelementsbyclassname-return)。 – Xufox

回答

1

getElementsByTagName返回一個數組狀結構(HTMLCollection)。因此,productThumb未定義,因爲HTMLCollection中沒有src屬性。

在你的榜樣只需刪除線1 .src,並在第4行的末尾添加它,你要善於去。

+0

我在發佈這個問題之前試過這個。我得到一個類似的錯誤:Uncaught TypeError:無法讀取未定義的屬性'src'(...) –

+0

我無法在沒有更多代碼的情況下複製確切的問題;據我所知,代碼正常工作,按照此JSFiddle:https://jsfiddle.net/Hatchet/a64umcbr/ – Hatchet

+0

我添加了警報和控制檯日誌代碼,以查看代碼是否實際上循環通過img標記和它似乎這樣做。由於某種原因,它在最後一個img之後得到了undefined。我會做更多的調試。雖然謝謝! –

1

您的代碼應該是這樣的:

var productThumb = document.getElementsByTagName("img"); 
var inputs = document.getElementsByTagName("input"); 
for (var i = 0, max = inputs.length; i < max; i++) { 
    imgSrc = productThumb[i].src; 
    if (inputs[i].type === 'checkbox' && imgSrc.indexOf("/img/folder/1/") === 0) 
     inputs[i].checked = true; 
} 

這是因爲,在第1行getElementsByTagName返回IMG元件的陣列。因此,從一組元素中獲取src是沒有意義的。

+0

我嘗試此操作時遇到同樣的錯誤。 –