2

現在、ラジオボタンとチェックボックスを使用しています。このサンプル プロジェクトでは、ユーザーが選択した値に基づいて画像を表示するラジオ ボタンとチェックボックスがあります。

選択した各アイテムに価値のある価格を追加し、下部に合計コストを表示するにはどうすればよいですか?

以下の js は、選択した値に基づいて画像を表示するプロセスを示しています。

JS

<script>
function check_value(currentElement, val, id, type) {
    var el = document.getElementById("imgBox" + id);
    if (val > 0 && val < 4) { //will trigger when [1,2,3]

        if(currentElement.checked)
        {
            el.src = "images/" + type + val + ".jpg";
            el.style.display = "";
        }
        else
        {
            el.src = "";
            el.style.display = "none";
        }           
    }
}    
</script>

HTML

<h2>Choose a bike</h2>
<form name="builder">
    <input type="radio" name="field" onclick='check_value(this, 1, 1, "bike")'/> KAWASAKI KX 450F- $8,399<br />
    <input type="radio" name="field" onclick='check_value(this, 2, 1, "bike")'/> 2010 Yamaha Road Star S- $13,090<br />
    <input type="radio" name="field" onclick='check_value(this, 3, 1, "bike")'/> Aprilia RSV4- $16,999<br />
</form>

<img id="imgBox1" src="#" style="display:none"> 

<h2>Choose a tire</h2>  
<form name="tire">
    <input type="radio" name="field" onclick='check_value(this, 1, 2, "tire")'/> Michelin Pilot Road 3 Tires- $299.99<br />
    <input type="radio" name="field" onclick='check_value(this, 2, 2, "tire")'/> Dunlop Roadsmart Sport-Touring Tires- $154.99<br />
    <input type="radio" name="field" onclick='check_value(this, 3, 2, "tire")'/> Pirelli Scorpion Trail Tires- $119.99<br />
</form>

<img id="imgBox2" src="#" style="display:none">

<h2>Choose Accesories</h2>
<form name="tire">
    <input type="checkbox" name="field" onclick='check_value(this, 1, "3a", "accessories")'/> Chrome Front Plate- $246.50<br />
    <input type="checkbox" name="field" onclick='check_value(this, 2, "3b", "accessories")'/> Jacket- $87.99<br />
    <input type="checkbox" name="field" onclick='check_value(this, 3, "3c", "accessories")'/> Gloves- $35.99            
</form>

<div id="accessories">
    <img id="imgBox3a" src="#" style="display:none">
    <img id="imgBox3b" src="#" style="display:none">
    <img id="imgBox3c" src="#" style="display:none">
</div>
4

1 に答える 1

4

私は始めます

  1. 不要な formTags を削除し、 1 つに減らします。
  2. 入力名を変更します (例: ラジオの場合は「cylces」と「tire」、「frontPlate」は以下のコードを参照)。
  3. 関数を修正し(パラメーターを減らし)、価格を入力フィールドの値属性として設定します
  4. 加算して現在の合計を計算for-loopする

ここにいます...

<head>
    <title></title>
    <script>
        function check_value(curElem, id) {
            var el = document.getElementById("img" + curElem.name);
            el.src = "images/" + curElem.name + id + ".jpg";
            if (!curElem.checked)
                el.style.display = "none";
            else
                el.style.display = "block";

            // calculate Total
            var total = 0;
            var controls = document.getElementsByTagName('input');
            for (var i = 0; i < controls.length; i++) {
                if ((controls[i].type === 'radio' || controls[i].type === 'checkbox') && controls[i].checked)
                    total = total + parseFloat(controls[i].value);
            }
            document.getElementById("total").innerHTML = total;
            //alert("Total: " + total);
        }    
    </script>
</head>
<body>
    <form name="builder">
        <h2>
            Choose a bike</h2>
        <input type="radio" name="Bike" value="8399" onclick='check_value(this, 1)' />
        KAWASAKI KX 450F- $8,399<br />
        <input type="radio" name="Bike" value="13090" onclick='check_value(this, 2)' />
        2010 Yamaha Road Star S- $13,090<br />
        <input type="radio" name="Bike" value="16999" onclick='check_value(this, 3)' />
        Aprilia RSV4- $16,999<br />
        <img id="imgBike" src="#" style="display: none" />
        <h2>
            Choose a tire</h2>
        <input type="radio" name="Tire" value="299.99" onclick='check_value(this, 1)' />
        Michelin Pilot Road 3 Tires- $299.99<br />
        <input type="radio" name="Tire" value="154.99" onclick='check_value(this, 2)' />
        Dunlop Roadsmart Sport-Touring Tires- $154.99<br />
        <input type="radio" name="Tire" value="119.99" onclick='check_value(this, 3)' />
        Pirelli Scorpion Trail Tires- $119.99<br />
        <img id="imgTire" src="#" style="display: none" />
        <h2>
            Choose Accesories</h2>
        <input type="checkbox" name="FrontPlate" value="246.50" onclick='check_value(this, "")' />
        Chrome Front Plate- $246.50<br />
        <input type="checkbox" name="Jacket" value="87.90" onclick='check_value(this, "")' />
        Jacket- $87.99<br />
        <input type="checkbox" name="Gloves"  value="35.99" onclick='check_value(this, "")' />
        Gloves- $35.99
        <div id="accessories">
            <img id="imgFrontPlate" src="#" style="display: none" />
            <img id="imgJacket" src="#" style="display: none" />
            <img id="imgGloves" src="#" style="display: none" />
        </div>
        <div id="total"></div>
    </form>
</body>

これはあなたの答えの解決策かもしれませんが、このコードの使用法はわかりません。実際の環境では、ほとんどのデータは生成されたサーバーから取得されるため、このコードを完全にやり直す必要があります。

于 2012-09-09T21:00:36.777 に答える