Javascript 基于parseInt的计算价格

Javascript 基于parseInt的计算价格,javascript,jquery,parseint,Javascript,Jquery,Parseint,我有两个输入,其中用户输入产品的width和height(比如mm)。所以最低价格是250美元,直到宽度=50和高度=20。然后我想增加25美元的总价格,每次宽度或高度编辑10毫米。因此,如果w=60和h=20(或w=50/h=30),那么总额应该是275美元$300-当w=60和h=30时 现在,凭借我可怜的jquery知识,我制造了这个怪物 var基价=250; var-priceForSm=50; var price300=基准价格+价格ForSM; var price450=price

我有两个输入,其中用户输入产品的
width
height
(比如mm)。所以最低价格是250美元,直到
宽度=50
高度=20
。然后我想增加25美元的总价格,每次宽度或高度编辑10毫米。因此,如果
w=60和h=20(或
w=50/h=30
),那么总额应该是275美元$300-当w=60和h=30时

现在,凭借我可怜的jquery知识,我制造了这个怪物

var基价=250;
var-priceForSm=50;
var price300=基准价格+价格ForSM;
var price450=price300+(priceForSm*3);
var price700=price450+(priceForSm*5);
var price950=price700+(priceForSm*5);
$(“#stwidth,#stheight”).keyup(函数(){
var stwidth=parseInt($(“#stwidth”).val(),10);
var-stheight=parseInt($(“#stheight”).val(),10);
如果(宽度>113){
$(“stwidth”).val(“113”);
}
如果(右侧>62){
美元(“#右侧”).val(“62”);
}
如果(标准宽度>=50和标准宽度>=20和标准宽度>=110和标准宽度>=10){
$(“.stamp full price span”).html(基价);
}
如果(stwidth>=30和stheight>=60和stwidth==80和stheight==20和stwidth>=60和stheight>=30和stwidth>=40和stheight>=40){
$(“.stamp full price span”).html(价格300);
}
如果(stwidth>=110和stheight>=20和stwidth>=110和stheight==30和stwidth>=70和stheight>=30和stwidth>=60和stheight>=40和stheight>=50和stheight>=50和stheight>=40和stheight>=60){
$(“.stamp full price span”).html(价格450);
}
如果(stwidth>=110和stheight>=40和stwidth>=110和stheight>=50和stwidth>=90和stheight>=40和stwidth>=80和stheight>=50和stheight>=60){
$(“.stamp full price span”).html(价格700);
}
如果(stwidth>=100和&stheight>=60和&stwidth>=111和&stheight>=50){
$(“.stamp full price span”).html(价格950);
}
});

xМ
总数:250

虽然您已经找到了获得宽度/高度的方法,并且希望每增加10个就增加25美元的价格,但只需计算一下:

var stwidth = parseInt($("#stwidth").val(), 10);
var stheight = parseInt($("#stheight").val(), 10);

var price = 250;

if(stwidth > 50) {
  price += 25 * Math.ceil((stwidth - 50) / 10)
}

if(stheight > 20) {
  price += 25 * Math.ceil((stheight - 20) / 10)
}

$(".stamp-full-price span").html(price);

当你遇到类似的情况时,总是试着把数学写在纸上,也许学得更快、完成起来会更容易。您可以写下计算某些值的价格的所有步骤,然后用变量替换某些部分。

虽然您已经找到了获得宽度/高度的方法,并且希望每增加10个值,价格就增加25美元,但只需做一个数学计算:

var stwidth = parseInt($("#stwidth").val(), 10);
var stheight = parseInt($("#stheight").val(), 10);

var price = 250;

if(stwidth > 50) {
  price += 25 * Math.ceil((stwidth - 50) / 10)
}

if(stheight > 20) {
  price += 25 * Math.ceil((stheight - 20) / 10)
}

$(".stamp-full-price span").html(price);

当你遇到类似的情况时,总是试着把数学写在纸上,也许学得更快、完成起来会更容易。您可以写下计算某些值的价格的所有步骤,然后用变量替换某些部分。

这里还有一个解决方案,其中价格是根据四舍五入的值计算的

var基价=250;
var baseW=50;
var baseH=20;
$(“#stwidth,#stheight”).keyup(函数(){
var stwidth=parseInt($(“#stwidth”).val(),10);
var-stheight=parseInt($(“#stheight”).val(),10);
var dW=(stwidth-baseW)>0?数学舍入((stwidth-baseW)/10):0;
VarDH=(sThight-baseH)>0?数学轮((sThight-baseH)/10):0;
var价格=基准价格+dW*25+dH*25;
$(“.stamp full price span”).html(价格);
});

x
мм
总数:250

这里还有一个解决方案,价格是根据四舍五入值计算的

var基价=250;
var baseW=50;
var baseH=20;
$(“#stwidth,#stheight”).keyup(函数(){
var stwidth=parseInt($(“#stwidth”).val(),10);
var-stheight=parseInt($(“#stheight”).val(),10);
var dW=(stwidth-baseW)>0?数学舍入((stwidth-baseW)/10):0;
VarDH=(sThight-baseH)>0?数学轮((sThight-baseH)/10):0;
var价格=基准价格+dW*25+dH*25;
$(“.stamp full price span”).html(价格);
});

x
мм
总数:250


将您的代码粘贴到问题中(不仅仅是小提琴的链接),最好的方案是找出一些公式,根据维度计算价格。然后将其添加到事件处理程序@LukasLiesis中的函数中,我读得太快了:(我要睡觉了!我将删除我的原始注释以清理线程粘贴问题中的代码(而不仅仅是指向小提琴的链接)最好的方案是找出一些根据维度计算价格所需的公式。然后将其添加到事件处理程序@LukasLiesis中的函数中,我读得太快了:(我要睡觉了!我将删除我的原始注释以清理我需要的线程。谢谢!如果选中复选框,那么在计算价格中再添加一些美元怎么样?所以只需再添加一个if子句
if(checked){price+=X}
或者,如果您不想增加$25,而是想在选中时增加一些其他值,那么将25作为变量并更改其值,然后再进行我所需的运算。谢谢!如果选中复选框,那么在计算的价格中再添加一些$怎么样?那么只需再添加一个if子句
if(checked){price+=X}
或者,如果您希望在选中时不是增加$25而是增加其他值,则在进行计算之前,将25作为变量并更改其值。这是错误的,因为您使用的舍入函数在某些情况下会进行舍入,请检查我的答案是否正确。对于宽度=51,您的数学价格将与宽度为50的价格相同,而它应该已经增加了25美元谢谢你的回答!@LukasLiesis,当然。Math.ceil比round更适合。最初编辑时我根本没有使用数学。它计算得几乎正确。@Banzay在数学中没有
几乎正确
这是正确或错误的,如果我们同意付给你100美元,我会寄给你1.00美元在视觉上也几乎是正确的,但你不会高兴,是吗?@LukasLiesis解决方案不能比任务更精确。作者要求每10个单元增加25个,但没有c