2012-11-17 43 views
1
<body> 
<script language="JavaScript"> 
<!-- 

var backImage = new Array(); 
backImage[0] = "pics/img02.jpg"; 
backImage[1] = "pics/img03.jpg"; 
backImage[2] = "pics/img04.jpg"; 
backImage[3] = "pics/img05.jpg"; 

function changeBGImage(whichImage){ 
if (document.body){ 
document.body.background = backImage[whichImage]; 
backImage = backImage++; 
} 
} 

//--> 
</script> 
<a href="javascript:changeBGImage(2)">Change</a> 
</body> 

對不起,我不明白我究竟應該如何正確地整合代碼在這裏 - 它仍然工作。我想在這裏做什麼:改變背景(工作)比添加一個背景計數器,以便下次鏈接被點擊下一個背景顯示(這是行不通的)。它應該是很簡單,但我想不出它還是...通過點擊鏈接每次更改背景img

回答

1

使用靜態計數器計數爲0〜3

var cnt = 0; 

function changeBGImage(){ 
    if (document.body){ 
    document.body.background = backImage[cnt]; 
    cnt = (cnt+1) % 4; // mod 4 
    } 
} 
+0

感謝,它的工作原理! – user1831854

0

有幾個問題在你的代碼

backImage = backImage++;

不像您期望的那樣增加backImage。語法應該是簡單的backImage++;

此外,通過通過單擊處理的背景設定,你需要document.body.style.backgrounddocument.body.style.backgroundImage = url(...)

背景圖像編輯

除了以上提到的循環,如果你還需要設置初始背景,嘗試如下所示,初始背景設置爲window.onload

jsFiddle here

var backImage = []; 
var whichImage = 0; 

backImage[0] = "http://dummyimage.com/100x100/000000/000000.png"; 
backImage[1] = "http://dummyimage.com/100x100/FF0000/000000.png"; 
backImage[2] = "http://dummyimage.com/100x100/00FF00/000000.png"; 
backImage[3] = "http://dummyimage.com/100x100/0000FF/000000.png"; 

function changeBGImage(reseedWhichImage){ 
    // If caller has specified an exact index, then reseed to this 
    if (reseedWhichImage != undefined) 
    { 
     whichImage = reseedWhichImage; 
    } 
    if (document.body){ 
     document.body.style.backgroundImage = "url(" + backImage[whichImage] + ")"; 
     whichImage++; 
     if (whichImage >= 4){ 
      whichImage = 0; 
     } 
    } 
} 

// During global load, set the initial background 
window.onload = changeBGImage(2); 
​ 
+0

這個解決方案看起來更優雅 - 我仍然無法獲得最初的背景,怎麼回事? – user1831854

+0

初始背景由全局'var whichImage = 2;' – StuartLC

+0

設置,但它似乎不工作,雖然... – user1831854