为什么我的JQuery的不同部分会影响我的JQuery的其他部分?

时间:2016-09-04 22:45:42

标签: javascript jquery math

我正在尝试完成我的转换器,并且有一次我确实有它工作但现在一些代码将无法正常工作。像LBS的任何转换一样。我发现代码中不相关的部分会影响其他部分,因为我删除了代码的基本部分,然后逐个部分地粘贴,看看它搞砸了。例如,当我只放置将LBS转换为其他单位的代码部分时,它可以正常工作,如下面的示例中所示,但是当我将转换为克时,它不起作用。为什么我的代码的不同部分相互影响,只是在同一个点击功能?

var main = function() {
  var bttn = $('.sbs');
  bttn.click(function(){
    var rslt = $('#result');
    var num = $('#nmbr').val();
    var inpt = $('#slct1').val();
    var outpt = $('#slct2').val();

    //Converstion from pounds
    if(inpt == 'pounds'){
      if(outpt == 'grams') {
        var pGrams6 = num * 453.59;
        rslt.text(pGrams6);
      } if(outpt == 'kiloGrams') {
        var pKilo6 = num * 2.2;
        rslt.text(pKilo6);
      } if(outpt == 'ounces') {
        var pOunce6 = num * 16;
        rslt.text(pOunce6);
      } if(outpt == 'milliGrams') {
        var pMilo6 = num * 453592;
        rslt.text(pMilo6);
      }
    }

     //Conversion from grams
    if(inpt = 'grams') {
      if(outpt == 'pounds') {
        var pPound5 = num / 453.59;
        rslt.text(pPound5);
      } if(outpt == 'kiloGrams') {
        var pKilo5 = num / 1000;
        rslt.text(pKilo5);
      } if(outpt == 'ounces') {
        var pOunce5 = num * 28.35;
        rslt.text(pOunce5);
      } if(outpt == 'milliGrams') {
        var pMilo5 = num * 1000;
        rslt.text(pMilo5);
      }
    }
  });
}

$(document).ready(main);

完整代码:https://jsfiddle.net/qete67cz/

1 个答案:

答案 0 :(得分:2)

这一行是问题所在:

if(inpt = 'grams') {

您需要==,而不是=。实际上,if测试总是true,因为您指定的是非空字符串。

通常,当您测试某些内容以查看其某些值或其他值时,您可能应该使用if ... else if而不是简单的if语句序列。