0

ここにこのWORKINGコードがあります:

function updatetotal (section, pricetoadd)         
{
    TotalPrice[section] = pricetoadd;
    total = 0;

    for(key in TotalPrice)
    {
        total = total + TotalPrice[key];
    }

    $("#monthlycost").html("$" + total);
    $("#firstpayment").html("$" + total);
}

<input {if $hw_s.disk[$_var].content == $__val.content}checked{/if} type=radio name="order[disk][{$_var}][content]" value="{$__val.content}" price="{$__val.price}" setup="{$__val.setup}" onclick="updatetotal('disk{$_var}', {$__val.price})">

値は非常に重要であることに注意してください。すべてのバックエンド コードが正しく機能するには、$__val.content である必要があります。

私がやろうとしているのは、上記をドロップダウンに変換し、機能を引き続き適切に機能させることです。JS 関数は、選択されたすべての項目の現在の合計を保持し、それらを合計します。入力タイプのラジオでは、JS 関数が価格変数を受け取ることができるため、非常に簡単です。残念ながら、ドロップダウンでは (私の知る限り)、onChange 関数はオプションではなく選択に関連付ける必要があります。残念ながら、オプションは動的に生成されるため、select はオプションについて何も知りません。

これまでのコード (動作していません):

function updatetotaldd(section, elementid)
{
    var selectBox = document.getElementById(elementid);
    var selectedValue = selectBox.options[selectBox.selectedIndex].value; // does not get what I need since value is a string. I need to somehow access the price of the selected option.


    TotalPrice[section] = selectedValue;

    for(key in TotalPrice)
    {
        total = total + TotalPrice[key];
    }

    $("#monthlycost").html("$" + total);
    $("#firstpayment").html("$" + total);
}

<select class="tech" name="order[disk][{$_var}][content]" id="svtech{$_var+1}" data-enablecheckbox="false" onChange="updatetotaldd('disk{$_var}', 'svtech{$_var+1}')">
    {foreach key=__var item=__val from=$_val}
        <option {if $hw_s.disk.content == $__val.content}selected{/if} value="{$__val.content}"  price="{$__val.price}" setup="${$__val.setup}" onSelect="updatetotaldd('disk{$_var}', 'svtech{$_var+1}')">
        {$__val.content}
        {if $__val.price > 0 && $__val.setup > 0}
            <strong> - add ${$__val.price}/Mo + ${$__val.setup} One time fee</strong>
        {elseif $__val.price > 0}
            <strong> - add ${$__val.price}/Mo</strong>
        {elseif $__val.setup > 0}
            <strong>- add ${$__val.setup} One time fee</strong>
        {/if}
        </option>
    {/foreach}
</select>

価格をjavascriptに渡すにはどうすればよいですか(selectのonChange、オプション自体の他のアクションであるかどうか)、またはオプションに変数属性(NOT VALUE)を持たせるにはどうすればよいですか?

4

2 に答える 2

2

フレッチは正しいです、私はエラーを修正しました。ここを参照してください。

var selectedOption = selectBox.options[selectBox.selectedIndex]; //need to somehow access the price of the selected option.

price= parseInt(selectedOption.getAttribute('price'));
于 2013-06-05T01:26:21.903 に答える
0

あなたが試していない場合に備えて、これを捨ててください...

price要素に属性を定義したoptionので、他のプロパティと同じように取得できるはずです。要素上でトリックを行う必要があるためonSelect、各option要素を呼び出す必要があるかどうかはわかりません。onChangeselect

function updatetotaldd(section, elementid)
{
    var selectBox = document.getElementById(elementid);
    //var selectedValue = selectBox.options[selectBox.selectedIndex].value; // does not get what I need since value is a string. I need to somehow access the price of the selected option.
    var selectedPrice = selectBox.options[selectBox.selectedIndex].attributes.price.value;


    TotalPrice[section] = selectedPrice;

    for(key in TotalPrice)
    {
        total = total + TotalPrice[key];
    }

    $("#monthlycost").html("$" + total);
    $("#firstpayment").html("$" + total);
}

<select class="tech" name="order[disk][{$_var}][content]" id="svtech{$_var+1}" data-enablecheckbox="false" onChange="updatetotaldd('disk{$_var}', 'svtech{$_var+1}')">
    {foreach key=__var item=__val from=$_val}
        <option {if $hw_s.disk.content == $__val.content}selected{/if} value="{$__val.content}"  price="{$__val.price}" setup="${$__val.setup}" onSelect="updatetotaldd('disk{$_var}', 'svtech{$_var+1}')">
        {$__val.content}
        {if $__val.price > 0 && $__val.setup > 0}
            <strong> - add ${$__val.price}/Mo + ${$__val.setup} One time fee</strong>
        {elseif $__val.price > 0}
            <strong> - add ${$__val.price}/Mo</strong>
        {elseif $__val.setup > 0}
            <strong>- add ${$__val.setup} One time fee</strong>
        {/if}
        </option>
    {/foreach}
</select>
于 2013-06-05T01:15:40.810 に答える