我编写了一个简单的 JavaScript 函数来在 JQuery ProgressBar( check here ) 的帮助下显示进度条。
progressBar函数可以设置显示不同值的不同背景图片。我想将 [0, MAX0.3] 中的值显示为红色,(MAX0.3, MAX0.7] 中的值显示为橙色,(MAX0.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是当前值,而total是进度条的最大值。该函数似乎不起作用,但当我用 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
});
问题是 javascript 将 {a:'foo'}
和 {'a':'foo'}
解释为带有字符串键“a”的对象,而不是变量 a
的值恰好是
关于javascript - JavaScript 如何评估参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115596/