2009-07-12 107 views
0

我使用JQuery ProgressBar(http://t.wits.sg/misc/jQueryProgressBar/demo.php#javascript如何評估參數?

來編寫一個簡單的javascript函數來顯示進度條progressBar函數可以設置爲顯示具有不同值的不同背景圖像。我想在[0,MAX * 0.3]中顯示爲紅色,(MAX * 0.3,MAX * 0.7)爲橙色,(MAX * 0.7,MAX)爲綠色,所以我寫了一個輔助函數如下:

function setBar(bar, cur, total) { 
    var v1 = parseInt(total * 0.3); 
    var v2 = parseInt(total * 0.7); 

    // if I run alert(v1) and alert(v2) here, the values are all right. 

    bar.progressBar(cur, { 
     max: total, 
     textFormat: 'fraction', 
     boxImage: '/img/pbar/progressbar.gif', 
     barImage: { 
      0: '/img/pbar/progressbg_red.gif', 
      v1: '/img/pbar/progressbg_orange.gif', 
      v2: '/img/pbar/progressbg_green.gif' 
     } 
    }); 
} 

的論點CUR是當前值,而是進度條的MAX值的功能似乎並沒有工作,但是當我將「V1」和「V2」與實際值如50和120,功能運行良好,而且我也在調用bar.progressBar之前檢查了值v1 v1和v2,他們都沒問題。

所以問題s eems,我不能傳遞一個變量而不是一個常量到bar.progressBar,我認爲它可能與JavaScript參數評估順序有關係,是否有任何修復這個問題?

回答

6

嘗試建立對象傳遞給它之前:

var barImageObj = {}; 
barImageObj[0] = '/img/pbar/progressbg_red.gif'; 
barImageObj[v1] = '/img/pbar/progressbg_orange.gif'; 
barImageObj[v2] = '/img/pbar/progressbg_green.gif'; 

bar.progressBar(cur, { 
    max: total, 
    textFormat: 'fraction', 
    boxImage: '/img/pbar/progressbar.gif', 
    barImage: barImageObj 
}); 

的問題是,JavaScript的interperets {a:'foo'}{'a':'foo'}與字符串鍵「一」的對象,而不是與任何變量a的值發生要

+0

它的工作原理,非常感謝。 – ZelluX 2009-07-12 08:56:44

0

問題可能在於v1和v2是浮點數而不是字符串。你是 使用它們作爲JavaScript對象上的鍵。

嘗試將它們轉換爲整數,然後轉換爲字符串,如果仍然無效。

3

你的問題是

barImage: { 
      0: '/img/pbar/progressbg_red.gif', 
      v1: '/img/pbar/progressbg_orange.gif', 
      v2: '/img/pbar/progressbg_green.gif' 
     } 

當使用對象文本形式的的Elemen t名稱被認爲是文字,即v1和v2是變量沒有效果,您創建的對象具有元素0,'v1'和'v2'。

做你想做什麼,你需要

barImage = { }; 

barImage[0] = '/img/pbar/progressbg_red.gif'; 
barImage[v1] = '/img/pbar/progressbg_orange.gif'; 
barImage[v2] = '/img/pbar/progressbg_green.gif';