我在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参数评估顺序有关系,有没有解决这个问题?
尝试在传递之前构建对象:
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碰巧是
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |