javascript如何评估参数?

Zel*_*luX 0 javascript jquery

我在JQuery ProgressBar的帮助下编写了一个简单的javascript函数来显示进度条(http://t.wits.sg/misc/jQueryProgressBar/demo.php#)

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'
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

参数cur是当前值,而total是进度条的MAX值.该功能似乎不起作用,但当我用"50和120"这样的实际值替换"v1:"和"v2:"时,该功能运行良好.在调用bar.progressBar之前,我还检查了v1和v2 的值,它们都没问题.

所以问题似乎是我无法将变量而不是常量传递给函数bar.progressBar,我认为它可能与javascript参数评估顺序有关系,有没有解决这个问题?

cob*_*bal 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
});
Run Code Online (Sandbox Code Playgroud)

问题是,JavaScript的interperets {a:'foo'}{'a':'foo'}与字符串密钥"a"的对象,而不是与无论变量的值a碰巧是