【问题标题】:Simple math but its not working? [duplicate]简单的数学,但它不起作用? [复制]
【发布时间】:2016-09-07 15:35:50
【问题描述】:

我有一个表格,用户可以在其中输入零件编号、零件价格和数量。然后它是价格和数量的倍数,得到一个总数。我已经启动并运行了这部分。

现在我必须得到部分税款,然后是总计,但这就是我得到的:

function calculateit() {
    var myBox1 = $( 'input[name=tax2]:checked' ).val(); //taxes value
    var myBox2 = document.getElementById('partstotalvalue').value; //parts total value
    var result = document.getElementById('partstax'); // input field for the total of taxes * parts
    var myResult = myBox1 * myBox2; //result = taxes * parts total
    result.value = myResult; // display the results

    var result2 = document.getElementById('partstotalwithtax');  // inputp field for taxes + total value
    var totalResult = myResult + myBox2; // totalresult = taxes on part + the parts total
    result2.value = totalResult; // display the results
}

这是小提琴:

https://jsfiddle.net/jdarville/hxqev0be/

【问题讨论】:

  • 看起来您正在尝试添加字符串而不是数字。
  • 仅供参考,当您从 DOM 读取值时,它们被读取为字符串而不是数字。您必须使用parseFloatparseInt 手动将其解析为数字。此外,+ 运算符也是字符串的连接运算符
  • 你能给我一把小提琴吗??
  • @AshokMandal:代码就在那里。为什么你不能做一个?
  • @DenysSéguret - 这已经在两个欺骗目标中得到解决。

标签: javascript jquery


【解决方案1】:

+ 运算符和变量类型的问题。

在您的情况下,您尝试添加这样的字符串

var a = "1" + "2"; <- 12

你需要的是使用 ParseFloat 然后做数学运算

var a = parseFloat("2") + parseFloat("2.14") <- 4.14

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您可以使用 unary + operator 来转换为 Number。

    var myBox1 = +$( 'input[name=tax2]:checked' ).val(); //taxes value
    var myBox2 = +document.getElementById('partstotalvalue').value; //parts total 
    

    【讨论】:

    • 你不应该回答明显重复的问题。
    • 你为什么讨厌?
    • @JCD - 这里没有仇恨。只是陈述事实。
    • @JCD:显然你从未经历过真正的仇恨。如果你有,你永远不会这么随便地使用这个词。
    猜你喜欢
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2011-04-14
    • 2021-10-05
    • 1970-01-01
    相关资源
    最近更新 更多