2016-07-06 84 views
-2

我在獲取此幻燈片的過程中遇到了很多麻煩。我必須製作一個外部的Javascript文件。我很困惑,因爲我根本不瞭解js。任何幫助將不勝感激。未捕獲的類型錯誤:無法設置未定義幻燈片的屬性'src'

var numImages = 3; 
 
var images = []; 
 
for (var i = 0; i < numImages; ++i) { 
 
    var image = new Image(); 
 
    image.src = 'baby' + (i + 1) + '.jpg'; 
 
    images.push(image); 
 
} 
 

 
var step = 0; 
 
function slideit() { 
 
    if (! document.images) { 
 
     return; 
 
    } 
 
    document.images.slide.src = images[step].src; 
 
    step = (step + 1) % numImages; 
 
} 
 
setInterval(slideit, 2500);

+1

1.是否有使用'ID = 「幻燈片」'頁面上的'img'元素? 2.在文檔之後運行的JS是否已被完全解析? – Siguza

+0

現在有。 JS在解析文檔後運行。它現在有效。謝謝。 –

回答

3

除非在某個地方,在你的HTML ...

<img id="slide"> 

那麼這將是爲undefined ...

document.images.slide 

因此...

document.images.slide.src = ... 

解釋...

Uncaught TypeError: Cannot set property 'src' of undefined 

下面是一個簡單的一塊,你可以運行,看看它的代碼工作

var images = [ 
 
    'http://placehold.it/200?text=A', 
 
    'http://placehold.it/200?text=B', 
 
    'http://placehold.it/200?text=C' 
 
] 
 

 
function slideIt(elem, i, images) { 
 
    elem.src = images[i % images.length] 
 
    setTimeout(slideIt, 1000, elem, i+1, images) 
 
} 
 

 
slideIt(document.querySelector('#slideshow'), 0, images)
<img id="slideshow">


在您的原始代碼中,您正在預加載圖像。在初始化滑塊之前,我已經在下面做了一個小改編以預先加載圖像。

var images = [ 
 
    'http://placehold.it/200?text=A', 
 
    'http://placehold.it/200?text=B', 
 
    'http://placehold.it/200?text=C' 
 
] 
 

 
function slideIt(elem, i, images) { 
 
    elem.src = images[i % images.length].src 
 
    setTimeout(slideIt, 1000, elem, i+1, images) 
 
} 
 

 
function imagep(src) { 
 
    return new Promise(function(pass,fail) { 
 
    var i = new Image() 
 
    i.src = src 
 
    i.onload = function(event) { pass(i) } 
 
    }) 
 
} 
 

 
Promise.all(images.map(imagep)).then(function(imgs) { 
 
    slideIt(document.querySelector('#slideshow'), 0, imgs) 
 
})
<img id="slideshow">

+0

謝謝。這工作!我一直在搜索和搜索,但找不到任何東西。很簡單。 –

+0

不客氣。樂於幫助。 – naomik

相關問題