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哦,谢谢,成功了…非常感谢!非常感谢你们的回答!