2010-04-09 103 views
1

在我正在製作的網站上,我需要一個進度條,我找到了適合我需求的一個。默認情況下,當達到一定比例(0-30紅,30-70橙等)時,它將逐漸改變顏色。我唯一的問題是改變他們,我可以很容易地用一個像50這樣的靜態數字來設置它們,但是當我嘗試動態地執行它(即:2000 * .3 = 600)時,它會失敗。我不太瞭解js/jquery,所以這對我來說尤其困難,如果你能幫上忙,那會很棒。我很確定這是一件很簡單的事,我錯過了。將var作爲參數傳遞

失敗代碼:

var barmax = 2000; 
var orangeBound = Math.round(barmax * .3); 
var greenBound = Math.round(barmax * .7); 
//alert(orangeBound+":"+greenBound); 
$("#pb1").progressBar({ max: barmax, textFormat: 'fraction', 
barImage: { 
     0: 'images/progressbg_red.gif', 
     orangeBound: 'images/progressbg_orange.gif', 
     greenBound: 'images/progressbg_green.gif'} 
    }); 

的作品,但我不能使用,因爲它是動態的代碼:

$("#pb1").progressBar({ max: barmax, textFormat: 'fraction', 
    barImage: { 
     0: 'images/progressbg_red.gif', 
     600: 'images/progressbg_orange.gif', 
     1400: 'images/progressbg_green.gif'} 
    }); 

如果您需要查看源,here。再次感謝!

回答

1

的問題是,使用orangeBound作爲對象字面的關鍵是指字符串"orangeBound"使用,而不是變量的值。相反,請嘗試構建像這樣的對象:

var barImage = {0: 'images/progressbg_red.gif'}; 
barImage[orangeBound] = 'images/progressbg_orange.gif'; 
barImage[greenBound] = 'images/progressbg_green.gif' 
var barmax = 2000; 
var orangeBound = Math.round(barmax * .3); 
var greenBound = Math.round(barmax * .7); 
$("#pb1").progressBar({ 
    max: barmax, 
    textFormat: 'fraction', 
    barImage: barImage 
}); 
3

在JS中,{orangeBound:「foo」}只會產生一個名爲「orangeBound」的包含值「foo」的鍵。你必須單獨建立對象:

var barImages = {0: 'images/progressbg_red.gif'}; 
barImages[orangeBound] = 'images/progressbg_orange.gif'; 
// ... 
$(...).progressBar({..., barImage: barImages}); 
+0

謝謝。這爲我節省了很多時間。 – Lienau 2010-04-09 23:35:09