Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加在Javascript中不起作用_Javascript_Html_Addition - Fatal编程技术网

添加在Javascript中不起作用

添加在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

我对Javascript非常陌生,试图创建一个遇到麻烦的表单

当我使用+时,它不等于值的总和,而是将其背对背放置。例:5+10(510)

如果你想看的话,这是我的代码。我很感谢你的帮助,因为我自己无法解决这个问题

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
使用一个参数来指定基。您几乎总是想要base
10

这不是特别优雅,但我发现它简单、容易、有用:

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有很多方法来进行转换。我认为他不想删除+操作符。他想要一个值,这可能不是他的答案,因为他在默认情况下传递字符串。关键是强制字符串为数值,而“+”不行。我的建议很容易实现。我认为他不想删除+运算符。他想要一个值,这可能不是他的答案,因为他在默认情况下传递字符串。关键是强制字符串为数值,而“+”不行。我的建议很容易做到这一点。