jQuery:if和else if语句带&am​​p;&?

时间:2016-02-01 11:32:11

标签: jquery

我尝试使用jQuery创建else if&&语句,我将在if和else if语句中有两个条件,所以我使用if同样。

但是,每次我在代码中使用else if if ($button.text() == "+" && parseFloat(oldValue) == parseFloat(maximum)) { alert("You cannot do that"); }else if($button.text() == "+" && parseFloat(oldValue) > parseFloat(maximum)){ ......................... 时,我的代码都会停止工作,我无法弄清楚为什么会一直这样。

为了更好地解释这一点,我已创建了此FIDDLE

有问题的代码是:

    if ($button.text() == "+") {
.........................

如果我将上面的代码更改为:

oldValue >= maximum

一切正常,但if if和else if语句似乎没有任何效果,我也不会在领事中看到任何错误。

有人可以就此问题提出建议吗?

有什么东西我不见了吗?

任何帮助将不胜感激。

修改

基于一些答案,我已经编辑了我的代码,但我仍有一些问题!

问题是即使{{1}},输入和剩余更改的数量。这是FIDDLE

2 个答案:

答案 0 :(得分:1)

你的条件都错了 - 你没有涵盖+按钮按下的所有可能性 - 只有当它等于max或大于max时。

由于你没有说如果数字小于最大值会发生什么,当你的加号被按下0时,它的起点小于最大值(我猜最大值大于0)所以你的逻辑是按你的减号按钮(你的if的else部分)没有做任何事情,因为你不能少于0。

所以即使你点击加号,它也会触发减号事件。

我重写了您的if语句,以保持+-分开:

if ($button.text() == "+") {
  // logic for + button press only
  if (parseFloat(oldValue) >= parseFloat(maximum)) {        
    alert("You cannot do that");
  } else {
    var newVal = parseFloat(oldValue) + 1;
    $('#remaining').html(parseFloat(entries) - 1);


    if (entries == 0) {
      //alert("You have no entries left!");


      //$('.continue').prop('disabled', true);
      alert("You have 0 entries left!");
      $('#remaining').html(0);
      //$('.continue').prop('disabled', true);
      var newVal = parseFloat(oldValue);
      //alert(newVal);

    }
  }
} else {  
  // logic for - button press only goes in the else
  // Don't allow decrementing below zero
  if (oldValue > 0) {
    var newVal = parseFloat(oldValue) - 1;
    $('#remaining').html(parseFloat(entries) + 1);

  } else {
    newVal = 0;
  }
}

Updated fiddle

如果您想保留其他if语句,请尝试以下操作:

 if ($button.text() == "+" && parseFloat(oldValue) >= parseFloat(maximum)) {
    // this is invalid range for "+"
 } else if ($button.text() == "+" && parseFloat(oldValue) < parseFloat(maximum)) {
   // this is valid and covers off the rest every eventuality of your plus button
 } else {
   // this will be your minus button logic
 }

答案 1 :(得分:0)

我仍然有点困惑,但我认为我修复了您的代码,请在FIDDLE我使用switch来检查我的解决方案以简化..

$(function() {

  $(".numbers-row").append('<div class="inc button">+</div><div class="dec button">-</div>');

  $(".button").on("click", function() { 
    var $button  = $(this);
    var oldValue = $button.parent().find("input").val();
    var maximum  = $button.parent().find("input").attr("data-max");
    var entries  = $('#remaining').html();

    switch($button.text()) {
        case '+':
            if(entries == 0){
              alert("You have no entries left!");
              var newVal = parseFloat(oldValue);
            }else{
              var newVal = parseFloat(oldValue) + 1;
              $('#remaining').html(parseFloat(entries) - 1);
            }
            break;

        case '-':
            if (oldValue > 0) {
              var newVal = parseFloat(oldValue) - 1;
              $('#remaining').html(parseFloat(entries) + 1);
            } else {
              alert("You cannot do that");
              newVal = 0;
            }
            break;
    }

    $button.parent().find("input").val(newVal);
  });

});