我已經構建了一個cms,允許用戶將最多10張圖像添加到幻燈片中,所有這些都在前端以div格式輸出,並帶有showcaseSlide的ID最後,例如showcaseSlide0,showcaseSlide1等。對於控制幻燈片顯示的javascript,我需要將所有的div id輸出到數組中,但在幻燈片播放結束時結束數組,例如,如果div id從showcaseSlide0 - showcaseSlide3中去掉了,我需要數組要從幻燈片[0] - 幻燈片[3]中移出。基於不存在的元素的斷開循環
下面是當前的代碼和一些註釋掉的代碼,我有嘗試過:
var slides = new Array();
var count = 0;
for(i=0; i<=10; i++){
slides[i] = "showcaseSlide"+i;
document.write(slides[i]); //so that I can see which id's are in the array
var div = document.getElementById(slides[i]);
//if(div) { break; } <- doesn't break
//if(document.getElementById(slides[i]) == null) break; <-breaks after 1st
//if(document.getElementById(slides[i]) == undefined) break; <- breaks after 1st
};
編輯:
我發現了(感謝Teemu誰下面評論),它沒有工作,因爲它在頁面加載之前被調用,因此在對象被渲染之前被調用。我還要感謝Peter Kelly(他也在下面發表了評論),他指出我需要使用!在我打破陳述和弗雷澤誰指出我的循環太大了。
下面是新的代碼(包括正開始功能的其它元件):
var count = 0;
var wait = 4000;
var slides = [];
function startShowcase() {
for(var i=0; i<10; i++){
slides[i] = "showcaseSlide"+i;;
if(!document.getElementById(slides[i])) { break; }
};
setInterval(showcase, wait);
};
如果(!div) – 2012-03-07 12:56:44
*「break after 1st」,那麼你試過嗎?*:然後ID爲'showcaseSlide0'的元素不存在。測試本身是正確的(儘管過於冗長)。 – 2012-03-07 12:57:17
我試過如果(!div)(在第一個之後中斷)和document.getElementById(幻燈片[count])在控制幻燈片顯示的函數中起作用(count是一個計數器,當我們到達數組末尾時重置)。 – 2012-03-07 13:02:50