2011-08-27 60 views
0

我不想要加載所有圖像,只需要隨機選擇一張圖像。我無法弄清楚其他圖像是否隱藏,但在後臺加載。每個圖像都需要附加一個超鏈接。帶有加載鏈接的隨機圖像,無需加載全部

<SCRIPT LANGUAGE="Javascript"> 
function banner() { } ; b = new banner() ; n = 0 
b[n++]= "<a href='#'><img src='main_theme/top_gallery/gallery1.jpg' /></a>" 
b[n++]= "<a href='#'><img src='main_theme/top_gallery/gallery2.jpg' /></a>" 
b[n++]= "<a href='#'><img src='main_theme/top_gallery/gallery3.jpg' /></a>" 
b[n++]= "<a href='#'><img src='main_theme/top_gallery/gallery4.jpg' /></a>" 
b[n++]= "<a href='#'><img src='main_theme/top_gallery/gallery5.jpg' /></a>" 
i=Math.floor(Math.random() * n) ; 
document.write(b[i]) 
</SCRIPT> 
+0

爲什麼你把它標記爲jQuery?從不介意這是多麼可怕,當然沒有涉及任何jQuery。 – Sinetheta

+0

我很抱歉,整天都在編碼,並忘記了它與jquery沒有關係。只是尋求一些幫助。 – nuclearsugar

回答

1

只有選中的圖像(b[i]中的圖像)纔會被加載。在調用document.write之前,您只有簡單的未解釋字符串,然後將其中一個字符串解釋爲HTML,並且瀏覽器會發現有一個圖像需要加載。

您可以清除瀏覽器緩存並查看您的Web服務器的訪問日誌以驗證我的說法。

+0

確認。謝謝。 – nuclearsugar

1

我沒有看到你現有的代碼有什麼問題。只有一個圖像會被寫入document.write()調用中。其他的東西只是內存中的一個字符串。代碼可以清理很多。我建議改變你的代碼如下:

writeRandomImage(baseURL, max) { 
    var rand = Math.floor(Math.random() * max) + 1; 
    var str = "<a href='#'><img src='" + baseURL + rand + ".jpg' /></a>"; 
    document.write(str); 
} 

writeRandomImage("main_theme/top_gallery/gallery", 5); 

這也應該排除任何其他圖像的任何問題加載自其他URL甚至沒有建立。

+0

優雅!但是,我如何將自定義鏈接傳遞給每個圖像? – nuclearsugar

+0

我不明白你的問題。此功能基於您發佈的示例。如果你想改變baseURL,只需要在函數調用writeRandomImage中傳遞一個不同的值。如果您希望每個圖像都完全不同且不像您的示例中算法相關,則可以創建一個候選URL數組,並將其傳遞到該函數中,並從數組中選擇一個隨機索引。 – jfriend00