0

这是上一个成功主题jquery的延续 :两个数字的百分比

首先,我要感谢您对上一篇文章的及时支持。现在我想让我的脚本更复杂一点。我想实现以下目标:如果我插入 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 回答