0

私はこの関数を作ります:

function price(val){
var test = $('span.hikashop_product_price_full:visible').text();
var test2 = test.split('%');
var test3 = test2[1].split(' ');
var test4 = test3[0].replace(',','.');
var eyy = parseFloat(test4) *val/100 + parseFloat(test4);
eyy = eyy.toFixed(2)
var ett = test.replace(test3[0]+' '+test3[1],'<span class=\"hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount\">'+eyy+' '+test3[1]+'</span>');
$('span.hikashop_product_price_full:visible').html(ett);

}

動的<span>タグから値を取得します(他のフィールドによって変化するため、動的であると言います)。私はフィールドを持っています

<select id="custome_vara" name="data[item][custome_vara]" size="1" onchange="price(this.value);">
<option value="" id="custome_vara_" selected="selected">alb</option>
<option value="20" id="custome_vara_20">stejar auriu</option>
<option value="30" id="custome_vara_30">moreiche</option>
</select>

呼び出すたびにトリガーされます。%初期価格に追加するには、1回だけ実行する必要があります。

スパンはこんな感じ

<span class="hikashop_product_discount">-10%</span><span class="hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount">51,34 €&lt;/span> </span> 

質問:

関数price()を呼び出すと、この関数で選択が実行され、選択がintになります。選択を静的にする方法とフィールドselect/optionは、この静的選択にオプションごとに1パーセントだけ追加します。

私はあなたが理解したことを望みます。

英語でごめんなさい。

ありがとう。

4

1 に答える 1

0

変化する

<select id="custome_vara" name="data[item][custome_vara]" size="1" onchange="price(this.value);">

<select id="custome_vara" name="data[item][custome_vara]" size="1">

次にこれを追加します:

$('#custome_vara').one('change',function(){
    price($(this+'option:selected').val());
});

編集:あなたの意図を明確にすることを期待して、ここにいくつかの「エラー」を投稿します:

まず、次のマークアップの例がありません。

'span.hikashop_product_price_full:visible'

2番:

eyy = eyy.toFixed(2)

次のようにする必要があります。

eyy = eyy.toFixed(2);

三番:

'<span class=\"hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount\">'

次のように記述できます。

'<span class="hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount">'

お互いを理解するのに役立つこのフィドルページを作成しました: http://jsfiddle.net/2fxxD/

EDIT2: 私はあなたが望むものを見ると思います. ここで次の動作を参照してください: http://jsfiddle.net/2fxxD/3/

function priceNew(val) {
    var discountedPrice = $('.hikashop_product_price_with_discount');
    var percentOff = $('.hikashop_product_discount');
    var price = discountedPrice.text().split(' ');
    var decimalPrice = price[0].replace(',', '.');
    var eyy = parseFloat(decimalPrice) * val / 100 + parseFloat(decimalPrice);
    eyy = eyy.toFixed(2);
    var newPrice = eyy + ' ' + price[1];
    discountedPrice.text(newPrice);
    percentOff.text('-' + val + '%');
    $('.hikashop_product_price').text(newPrice);
}

$('#custome_vara').one('change', function() {
    priceNew($(this + 'option:selected').val());
});

マークアップ:

<select id="custome_vara" name="data[item][custome_vara]" size="1">
    <option value="" id="custome_vara_" selected="selected">alb</option> 
    <option value="20" id="custome_vara_20">stejar auriu</option>
    <option value="30" id="custome_vara_30">moreiche</option>
</select>
<div>
<span class="hikashop_product_price_full" id="hikashop_product_price_full"> 
    <span class="hikashop_product_discount">-10%</span>
    <span class="hikashop_product_price hikashop_product_price_0 hikashop_product_price_with_discount">51,34 €&lt;/span> 
    </span>
</div>
于 2012-04-10T11:57:21.113 に答える