0

これは、最後に成功したトピックjquery: percentage of two numbers の続きです

まず、以前の投稿の迅速なサポートに感謝します。ここで、スクリプトをもう少し複雑にしたいと思います。次のことを実現したい: PRICE1 と PRICE2 を挿入してそれらの間に RATE を設定すると、RATE を別の値に変更し、PRICE2 を RATE 値に応じて対応する値に変更できます。

私の計算スクリプトはほぼ正しいのですが、JQuery に関する知識が乏しいので、どこで間違っているのかを尋ねてしまいます。ご支援いただきありがとうございます!

<script src="libs/jquery.min.js"></script>

<script type="text/javascript">
$(function() {
    $("#PRICE1, #PRICE2").change(function() {
    var result = parseFloat(parseFloat($("#PRICE1").val(), 10) - parseFloat($("#PRICE1").val(), 10))/ parseFloat($("#PRICE2").val(), 10) * 100;
    $('#RATE').val(result||'');
  })
  else {
   $("#PRICE1, #RATE").change(function() {
    var result = parseFloat(parseFloat($("#PRICE1").val(), 10) *  parseFloat($("#RATE").val(), 10))/ 100 + parseFloat($("#PRICE1").val(), 10);
    $('#PRICE2').val(result||'');
  })}
});
</script> 

編集:

他の人を助けるかもしれないコードはほとんど正しく機能しています:

$(document).ready(function(){
$("#priceOne, #priceTwo").change(function() {
  var priceOne = parseFloat($("#priceOne").val());
  var priceTwo = parseFloat($("#priceTwo").val());
  $('#Rate').val((priceTwo - priceOne) / priceOne * 100); // Set the rate
});
// If price one or the rate is changed, adjust price two.
$("#priceOne, #RATE").change(function() {
  var priceOne = parseFloat($("#priceOne").val());
  var rate = parseFloat($("#Rate").val());
  $('#priceTwo').val((priceOne * rate)/ 100 + priceOne);
});
})

私を助けてくれたみんな、ありがとう!!!

4

1 に答える 1

1

else一致する と がありませんif。何を達成しようとしているのかはわかりませんが、いくつかの条件を確認する必要があります。

必要と思われるものをコーディングしてみます。ただし、変数の名前を変更します。すべて大文字は入力が難しいだけでなく、定数またはマクロでない限り使用しないでください。

// In ready() callback
// @NOTE - This does NO error checking for division by 0 or other NaN operations.

// If price two is changed, adjust the rate.
$("#priceTwo").change(function() {
  var priceOne = parseFloat($("#priceOne").val());
  var priceTwo = parseFloat($(this).val());
  $("#rate").val(priceTwo / priceOne); // Set the rate
});
// If price one or the rate is changed, adjust price two.
$("#rate #priceOne").change(function() {
  var priceOne = parseFloat($("#priceOne").val());
  var rate = parseFloat($("#rate").val());
  $("#priceTwo").val(priceOne * rate);
});

コードには注意が必要な点がいくつかあります。

  • parseFloat基数引数を取らず、10渡しても無視されます。
  • parseFloat(parseFloat(...無意味です、なぜあなたがこれをしたのかわかりません。
  • jQuery を使用して、同じスコープで同じ要素を複数回選択しないでください。値を保存して再利用します - いくつかのサイクルを節約してください。
  • 前述したように、絶対に変更してはならないある種の定数でない限り、すべて大文字で変数に名前を付けないでください。きれいなスタイルの習慣を持つことは良いことです。
于 2012-11-29T10:26:35.840 に答える