Javascript jquerymath Don';行不通

Javascript jquerymath Don';行不通,javascript,jquery,Javascript,Jquery,我正在尝试使用数量系统,我的代码是: <div class="sp-quantity"> <div class="sp-minus fff"> <a class="ddd" href="#">-</a></div> <div class="sp-input"> <input type="text" class="quntity-input" value="

我正在尝试使用数量系统,我的代码是:

    <div class="sp-quantity">
        <div class="sp-minus fff"> <a class="ddd" href="#">-</a></div>
        <div class="sp-input">
            <input type="text" class="quntity-input" value="1">
        </div>
        <div class="sp-plus fff"> <a class="ddd-plus" href="#">+</a></div>
    </div>
    <script>
    $('.ddd-plus').click(function(){
        var $old = $('.quntity-input').val();
        var $plus =($old +1);
        // var $minus = $old - 1;
        $('input').val($plus);
        console.log($plus,$old);
    });
    </script>
<style>.sp-quantity {
    width:124px;
    height:42px;
    font-family:"ProximaNova Bold", Helvetica, Arial;
}
.sp-minus {
    width:40px;
    height:40px;
    border:1px solid #e1e1e1;
    float:left;
    text-align:center;
}
.sp-input {
    width:40px;
    height:40px;
    border:1px solid #e1e1e1;
    border-left:0px solid black;
    float:left;
}
.sp-plus {
    width:40px;
    height:40px;
    border:1px solid #e1e1e1;
    border-left:0px solid #e1e1e1;
    float:left;
    text-align:center;
}
.sp-input input {
    width:30px;
    height:34px;
    text-align:center;
    font-family:"ProximaNova Bold", Helvetica, Arial;
    border: none;
}
.sp-input input:focus {
    border:1px solid #e1e1e1;
    border: none;
}
.sp-minus a, .sp-plus a {
    display: block;
    width: 100%;
    height: 100%;
    padding-top: 5px;
}
</style>

$('.ddd plus')。单击(函数(){
var$old=$('.quantity input').val();
变量$plus=($old+1);
//var$减=$old-1;
$('input').val($plus);
console.log($plus,$old);
});
.sp数量{
宽度:124px;
高度:42px;
字体系列:“ProximaNova Bold”,Helvetica,Arial;
}
.sp负数{
宽度:40px;
高度:40px;
边框:1px实心#e1e1;
浮动:左;
文本对齐:居中;
}
.sp输入{
宽度:40px;
高度:40px;
边框:1px实心#e1e1;
左边框:0px纯黑;
浮动:左;
}
.sp plus{
宽度:40px;
高度:40px;
边框:1px实心#e1e1;
左边框:0px实心#e1e1;
浮动:左;
文本对齐:居中;
}
.sp输入{
宽度:30px;
高度:34px;
文本对齐:居中;
字体系列:“ProximaNova Bold”,Helvetica,Arial;
边界:无;
}
.sp输入:焦点{
边框:1px实心#e1e1;
边界:无;
}
.sp减a、.sp加a{
显示:块;
宽度:100%;
身高:100%;
垫面:5px;
}
(顺便说一句,这段代码只有在我将jquery放到控制台时才起作用,否则它就不起作用了

因此,当我单击加号时,它应该将1添加到输入的值中(例如:如果输入的值为1,它应该为2,但它将为11)


我如何解决这个问题呢?谢谢您必须使用
一元操作符将结果强制为数字

var $plus = +$old + 1;
另一个解决方案是使用
parseInt
方法

var $plus =parseInt($old,10) + 1;
解决方案

$('.ddd plus')。单击(函数(){
var$old=$('.quantity input').val();
变量$plus=+$old+1;
$('input').val($plus);
});
$('.ddd减号')。单击(函数(){
var$old=$('.quantity input').val();
var$plus=$old-1;
如果($plus
$('.quantity input').val()
返回字符串,并且需要将输入值转换为数字

var $old = Number($('.quntity-input').val());
所以你的代码应该是

$('.ddd-plus').click(function(){
    var $old = Number($('.quntity-input').val());
    var $plus =($old +1);
    // var $minus = $old - 1;
    $('input').val($plus);
    console.log($plus,$old);
});
确保检查
isNaN
,因为
Number
parseInt
将返回
NaN
,对于无效的数字

您可以使用

一元加号运算符位于其操作数之前,并计算为其操作数,但如果尚未将其转换为数字,则尝试将其转换为数字

一元加号是将某物转换成数字的最快和首选方式,因为它不对数字执行任何其他操作

代码:

var$input=$('input'),
val=+$input.val();
$('.ddd plus')。单击(函数(){
$input.val(++val);
});
$('.ddd减号')。单击(函数(){
val&&$input.val(--val);
});
.sp数量{宽度:124px;高度:42px;字体系列:“ProximaNova Bold”,Helvetica,Arial;}
.sp减去{宽度:40px;高度:40px;边框:1px实心#e1e1e1;浮动:左;文本对齐:中心;}
.sp输入{宽度:40px;高度:40px;边框:1px实心#e1e1e1;边框左侧:0px实心黑色;浮动:左侧;}
.sp加上{宽度:40px;高度:40px;边框:1px实心#e1e1e1;边框左侧:0px实心#e1e1e1e1e1;浮动:左侧;文本对齐:中心;}
.sp输入{宽度:30px;高度:34px;文本对齐:中心;字体系列:“ProximaNova Bold”,Helvetica,Arial;边框:无;}
.sp输入:焦点{边框:1px实心#e1e1e1;边框:无;}
.sp减去a、.sp加a{显示:块;宽度:100%;高度:100%;填充顶部:5px;}

或使用parseInt:

var $old = parseInt($('.quntity-input').val(), 10);
因为您使用的是jquery的val()函数,通常val()返回包含值的数组,但如果未找到任何值,则返回null

资料来源:

您可以通过以下链接检查您的程序:

$('.ddd plus')。单击(函数(){
var old=$('.quantity input').val();
var plus=(parseInt(旧)+1);
$('.Quantity input').val(加号);
});
$('.ddd减号')。单击(函数(){
var old=$('.quantity input').val();
var plus=(parseInt(旧)-1);
$('.Quantity input').val(加号);
});
.sp数量{
宽度:124px;
高度:42px;
字体系列:“ProximaNova Bold”,Helvetica,Arial;
}
.sp负数{
宽度:40px;
高度:40px;
边框:1px实心#e1e1;
浮动:左;
文本对齐:居中;
}
.sp输入{
宽度:40px;
高度:40px;
边框:1px实心#e1e1;
左边框:0px纯黑;
浮动:左;
}
.sp plus{
宽度:40px;
高度:40px;
边框:1px实心#e1e1;
左边框:0px实心#e1e1;
浮动:左;
文本对齐:居中;
}
.sp负数{
宽度:40px;
高度:40px;
边框:1px实心#e1e1;
左边框:0px实心#e1e1;
浮动:左;
文本对齐:居中;
}
.sp输入{
宽度:30px;
高度:34px;
文本对齐:居中;
字体系列:“ProximaNova Bold”,Helvetica,Arial;
边界:无;
}
.sp输入:焦点{
边框:1px实心#e1e1;
边界:无;
}
.sp减去a,
.sp加a{
显示:块;
宽度:100%;
身高:100%;
垫面:5px;
}


“如果输入的值为1,它应该为2,但它等于11”-因此您想要添加,但它是附加的…这还不足以让您产生一个简单的google查询,例如…?
$('.qentity input').val();
中的值是一个字符串,因此您最终将1连接到字符串“1”,从而得到结果“11”。您可以使用parseInt将旧代码转换为数字。谢谢大家。谢谢,现在我想知道为什么我必须将代码放入控制台才能使其工作?当我不使用时,它似乎没有任何作用。@BerkayGunduz,看看我的代码。我通过单击减号按钮来完成。谢谢,现在,如果值为零,我将如何禁用它?@BerkayGunduz,看看n哦,谢谢,成功了…非常感谢!非常感谢你们的回答!