2011-01-12 10 views
0

我是JavaScript新手。我想要一個JavaScript代碼,我可以加載一個每天/每月/每年命名的圖像。在串行 我有以下代碼:用於序列圖像的Javascript代碼加載

var year = new Array(); 
year = ["08", "09", "10", "11"]; 

var month = new Array(); 
month = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JULY", "AUG", "SEP", "OCT", "NOV", "DEC"]; 

var date = new Array(); 
date = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"]; 

var ims = ""; 
for (var x in year) { 
for (var y in month) { 
    for (var z in date) { 
    ims += "<im src=screencover/img/" + date[z] + "" + month[y] + "20" + year[0] + ".png>"; 
    } 
} 
} 
document.write(ims); 
+1

什麼是你的問題? – lonesomeday 2011-01-12 14:15:50

+1

爲什麼在用新的(填充的)數組替換它們之前用空的數組對象初始化數組? – Quentin 2011-01-12 14:16:19

+0

明顯的錯誤是'year [0]`,它應該是`year [x]`。更基本的錯誤是使用`for..in`循環訪問數組。 – lonesomeday 2011-01-12 14:17:52

回答

0

使用內置的Date對象:

function getFullYearArray(year) { 
    var dates = [new Date(year, 0, 1, 0, 0, 0)], 
     oneday = 1000 * 60 * 60 * 24; 
    for (var i = 0; i < 364; i++) { 
     dates.push(new Date(dates[i].getTime() + oneday)); 
    } 
    // leap years, if last day is december 30, add one 
    if (dates[i].getDate() == 30) { 
     dates.push(new Date(dates[i].getTime() + oneday)); 
    } 
    return dates; 
} 

// usage 
y08 = getFullYearArray(2008); 
for (var i = 0, l = y08.length, date; i < l; i++) { 
    date = y08[i]; 
    console.log(date.toDateString()); 
} 

你將不得不解析爲建立自己的圖片src的字符串值的日期字符串,但這應該讓你開始。

編輯

我繼續打造出來的字符串:

function getFullYearArray(year) { 
    var dates = [new Date(year, 0, 1, 0, 0, 0)], 
     oneday = 1000 * 60 * 60 * 24; 
    for (var i = 0; i < 364; i++) { 
     dates.push(new Date(dates[i].getTime() + oneday)); 
    } 
    // leap years, if last day is december 30, add one 
    if (dates[i].getDate() == 30) { 
     dates.push(new Date(dates[i].getTime() + oneday)); 
    } 
    return dates; 
} 

// usage 
var ims = "", 
    y08 = getFullYearArray(2008); 
for (var i = 0, l = y08.length, date, m, d, y; i < l; i++) { 
    date = y08[i].toDateString(); 
    d = date.substring(8, 10); 
    m = date.substring(4, 7).toUpperCase(); 
    y = date.substring(11, 15); 

    ims += "<img src=\"screencover/img/" + d + m + y + ".png\">\n"; 
} 

console.log(ims); 
0

編輯:現在我明白了:)

試試這個:

function nrpad(number, length) { 
    var str = '' + number; 
    while (str.length < length) { 
     str = '0' + str; 
    } 
    return str; 
} 
var end_date = new Date(2011, 12, 1).getTime(); 
var start_date = new Date(2008, 1, 1).getTime(); 

var step = 86400000; // 1 day in msec 
for(var ts = start_date; ts <= end_date; ts += step){ 
    var d = new Date(ts); 
    var img = new Image(); 
    img.src = 'screencover/img/' + nrpad(d.getDay(),2) + nrpad(d.getMonth(),2) + nrpad(d.getFullYear(),2) + '.png'; 
    //console.log(img.src); 
} 

,但你必須重命名你的文件,如「 DDMMYYYY.png'(使用數字月份),如果您使用該示例。