1

私は今、次のことで立ち往生しています:

2 つのスライダーがあります。1 つは数量、もう 1 つは契約期間です。数量が増えると、1 個あたりの価格が下がります。契約期間が長くなれば、1枚あたりの価格はさらに下がります。

私は今これを持っています: http://jsfiddle.net/vBVkL/16/ どういうわけか、バッチを使用するときにピースあたりの価格を変更することができません。

    qty = ui.value;  //-> this works

    qty = batches[ui.value - 1]; //-> this doesn't work

誰かがこれで私を助けてくれますか? ありがとう!

4

1 に答える 1

1

スライダー ハンドラーで次の行を変更します。

$("input").val(prices[contract][qty - 1]);

$("input").val(prices[contract][ui.value - 1]);

元のコードは、文字列である変数qtyを使用しています。batchesそこから 1 を差し引こうとすると、配列のインデックスに使用できない「数値ではない」という結果になります。

prices配列にも問題があります。これらには 3 つの値しか含まれていませんが、スライダーで 4 番目を選択できます。これらの配列の最後に値を追加する必要があります。

var prices = {
    'none': [10, 9, 8, ?],
    '12 months': [9, 8, 7, ?],
    '24 months': [8, 7, 6, ?],
    '36 months': [7, 6, 5, ?],
};

更新されたフィドル

よくわからないのは、ページが最初に読み込まれたときにスライダーが正しくアニメーション化されない理由です。

編集:

ページの読み込み時にスライダーが機能しなかった理由は、変数の初期化に使用される値が原因です。

var contract = 'Geen'

スライダーが移動すると、コードは配列内$("input").val(prices[contract][qty - 1]);の値を検索しようとして失敗したため、エラーのために関数が終了し、jQueryUI はスライダーを更新する作業を終了しません。2 番目のスライダーを動かして初めて、変数が正しく設定されます。Geencontracts

の初期値contractを「なし」に設定すると、コードが正しく実行され、スライダーがアニメーション化されます。

また、契約期間スライダーを変更すると、価格を設定するときに数量スライダーの値が無視されるというバグもありました。この線:

$("input").val(prices[contract][ui.value - 1]);

「slider2」のイベント ハンドラを次のように変更する必要があります。

$("input").val(prices[contract][$("#slider1").slider("value") - 1]);

すべてが機能する更新されたフィドルを見てください。

于 2012-09-11T14:07:54.453 に答える