2016-09-27 3 views
-2

私は価格表のためにラジオボタンをいくつか入れました。 私はこの書かれている:Plusに私は上のメソッド内でこれらの変数にアクセスすることができますが、私がしたいjQueryで関数内の変数にアクセスするには?

$(document).ready(function() { 
    $('#windowsRange input').on('change', function() { 
     var windowPrice = $('input[name=windowName]:checked', '#windowsRange').val(); 
    }); 
    $('#profilesRange input').on('change', function() { 
     var profilePrice = $('input[name=profileName]:checked', '#profilesRange').val(); 
    }); 
    $('#tapesRange input').on('change', function() { 
     var tapePrice = $('input[name=tapeName]:checked', '#tapesRange').val(); 
    });  
    $('.totalPrice').html(windowPrice + profilePrice + tapePrice); 
}); 

をそれらのすべてが.totalPriceクラス... でこれを行うにはどのような方法をそれを置く&?

Decoupling Your HTML, CSS, and JavaScript

私はそれをしなかったのであれば、それは次のようになります: おかげで...

+0

これらをon関数の外で初期化すると、ドキュメント内の任意の場所にアクセスできます。 – depperm

+1

このメソッドは、あなたが思うとはまったく行いません。 –

+0

@ssube問題はありません。エラーは表示されません。私は変数にアクセスしたいだけです... –

答えて

4

あなたは、単にそれが "グローバル"

$(document).ready(function() { 
    var windowPrice, profilePrice, tapePrice; 
    $('#windowsRange input').on('change', function() { 
     windowPrice = parseInt($('input[name=windowName]:checked', '#windowsRange').val()); 
     setTotal(); 
    }); 
    $('#profilesRange input').on('change', function() { 
     profilePrice = parseInt($('input[name=profileName]:checked', '#profilesRange').val()); 
     setTotal(); 
    }); 
    $('#tapesRange input').on('change', function() { 
     tapePrice = parseInt($('input[name=tapeName]:checked', '#tapesRange').val()); 
     setTotal(); 
    }); 
    function setTotal() {  
     $('.totalPrice').html(windowPrice + profilePrice + tapePrice); 
    } 
    setTotal(); 
}); 
+0

ありがとう、それは動作しますが、それはプラスではありません、それはお互いの隣に表示されます... –

+0

あなたは毎回入力変更の合計を設定する必要はありませんか? @AliBahaari – Davide

+1

入力値は文字列であり、数値に変換する必要があります。 –

2

はモーメントと準備を取るvarsは作ることができます

$(document).ready(function() { 
    var totalPriceElements = '.js-adjust-total-price'; 

    $(totalPriceElements).on('change', function() { 
     var totalPrice = 0; 
     $(totalPriceElements).each(function(i, element){ 
      totalPrice += $(element).val(); 
     }) 
     $('.totalPrice').html(totalPrice); 
    }); 
}); 

すべての高度に結合した要素の代わりに( IDと要素タグ名を使用して)、総価格を調整する要素にクラスを適用することができます。 IDや入力の種類を変更した人は、javascriptを破損しません。

+0

ありがとうErik ... –

関連する問題