2009-07-12 19 views
0

Iはプログレスバー関数は異なる値で異なる背景画像を表示するように設定することができるJavaScriptはどのように引数を評価しますか?

http://t.wits.sg/misc/jQueryProgressBar/demo.php#)jQueryのプログレスバーの助けを借りて、プログレスバーを表示する単純なJavaScriptの関数を書きます。私は[0、MAX * 0.3]の値を赤色で表示したいと考えています(橙色は(MAX * 0.3、MAX * 0.7)、緑色は(MAX * 0.7、MAX))ので、次のようにヘルパー関数を書きます:

。そして「V2:」で: は、プログレスバーのMAX値でありながら、機能が動作していないようですが、私は「V1」を交換するとき
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は、現在の値であり、実際の50と120のような値、機能がうまく動作します。そして、私はまたbar.progressBarを呼び出す前V1とv2の値をチェックして、彼らはすべての権利です。

だから、問題の変数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 
}); 

問題は変数aの値が発生していないものは何でもして、文字列のキー「A」を持つオブジェクトとしてのjavascript interperets {a:'foo'}{'a':'foo'}ことですオブジェクトリテラル形式を使用している場合であることを

+0

を必要としたい行うに

、多くの感謝。 – ZelluX

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'; 
関連する問題