添加在Javascript中不起作用
我对Javascript非常陌生,试图创建一个遇到麻烦的表单 当我使用+时,它不等于值的总和,而是将其背对背放置。例:5+10(510) 如果你想看的话,这是我的代码。我很感谢你的帮助,因为我自己无法解决这个问题添加在Javascript中不起作用,javascript,html,addition,Javascript,Html,Addition,我对Javascript非常陌生,试图创建一个遇到麻烦的表单 当我使用+时,它不等于值的总和,而是将其背对背放置。例:5+10(510) 如果你想看的话,这是我的代码。我很感谢你的帮助,因为我自己无法解决这个问题 var service = document.getElementById("service"); var serviceprice = service.options[service.selectedIndex].id; var tech = document.getElement
var service = document.getElementById("service");
var serviceprice = service.options[service.selectedIndex].id;
var tech = document.getElementById("tech");
var techprice = tech.options[tech.selectedIndex].id;
var hours = document.getElementById("hours").value;
// The error happens here
var total = techprice * hours + serviceprice;
我还有一个html部分,脚本从中获取数据。尝试更改此行:
var total = techprice * hours + serviceprice;
到
我怀疑“servicePrice”是一个字符串,然后它将尝试将第一个值(比如:100)与第二个值(不是数字,而是字符串,比如“test”)连接起来,结果是“100test”。尝试更改此行:
var total = techprice * hours + serviceprice;
到
我怀疑“servicePrice”是一个字符串,然后它会尝试将第一个值(比如:100)与第二个值(不是数字,而是字符串,比如“test”)连接起来,结果是“100test”。尝试将字符串转换为int first with或float with尝试将字符串转换为int first with或float with只要您有字符串而不是数字,就会发生这种情况。
+
运算符对字符串执行串联。确保使用或将字符串解析为数字:
请注意,
parseInt
使用一个参数来指定基。您几乎总是希望基10
在您有字符串而不是数字时发生。+
运算符对字符串执行串联。确保使用或将字符串解析为数字:
请注意,
parseInt
使用一个参数来指定基。您几乎总是想要base10
这不是特别优雅,但我发现它简单、容易、有用:
var total = -(-techprice * hours - serviceprice);
甚至:
var total = techprice * hours -(-serviceprice);
它们都消除了不明确的+运算符。这不是特别优雅,但我发现它简单、容易且有用:
var total = -(-techprice * hours - serviceprice);
甚至:
var total = techprice * hours -(-serviceprice);
它们都消除了模棱两可的+运算符。+1在基数为10的注释上。当我接受前导零并最终得到以8为基数的数字时,这不止一次地让我感到痛苦。为了让它变得有趣,请参阅此链接,以获取比较各种字符串到数字转换函数和方法的速度的基准:@meewoK Cool comparison。这也是一本将字符串转换为数字的方法词典。在添加之前,您还可以将字符串化的数字乘以1。@Paul Yup,有很多方法可以转换数字,但其中许多方法对某些字符串的作用略有不同。meewoK的perf有一整套转换方法。以10为基数加1。当我接受前导零并最终得到以8为基数的数字时,这不止一次地让我感到痛苦。为了让它变得有趣,请参阅此链接,以获取比较各种字符串到数字转换函数和方法的速度的基准:@meewoK Cool comparison。这也是一本将字符串转换为数字的方法词典。在添加之前,您还可以将字符串化的数字乘以1。@Paul Yup,有很多方法可以转换数字,但其中许多方法对某些字符串的作用略有不同。meewoK的perf有很多方法来进行转换。我认为他不想删除+操作符。他想要一个值,这可能不是他的答案,因为他在默认情况下传递字符串。关键是强制字符串为数值,而“+”不行。我的建议很容易实现。我认为他不想删除+运算符。他想要一个值,这可能不是他的答案,因为他在默认情况下传递字符串。关键是强制字符串为数值,而“+”不行。我的建议很容易做到这一点。