我尝试使用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
答案 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;
}
}
如果您想保留其他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);
});
});