jquery:两个数字的百分比(第2部分)

时间:2012-11-29 10:19:57

标签: javascript jquery html

这是上一个成功主题的延续 jquery: percentage of two numbers

首先,我要感谢您对上一篇文章的及时支持。 现在我想让我的脚本更复杂一些。我想实现以下内容:如果我插入PRICE1和PRICE2以在THEM之间有RATE,那么我可以使用其他值更改RATE,并根据RATE值将PRICE2更改为corespondent值。

我的计算脚本接近正确,但我对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);
});
})

谢谢大家帮助我!!!

1 个答案:

答案 0 :(得分:1)

有一个else且没有匹配的if。我不确定你想要达到的目标,但需要检查一些条件。

我将尝试编写您需要的内容。但是我要重命名你的变量,不仅因为allcaps很难输入,而且除非是常量或宏,否则不应该使用它们。

// 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在同一范围内多次选择相同的元素。保存价值并重复使用 - 节省一些周期。
  • 正如我所提到的,不要在所有大写字母中命名变量,除非它们是某种永远不会改变的常量,最好有干净的习惯习惯。