1

我真的是 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 部分,脚本从中获取数据。

4

4 回答 4

4

只要你有一个字符串而不是一个数字,就会发生这种情况。运算符对+字符串执行连接。确保使用parseFloatparseInt将字符串解析为数字:

var service = document.getElementById("service");
var serviceprice = parseInt(service.options[service.selectedIndex].id, 10);
var tech = document.getElementById("tech");
var techprice = parseInt(tech.options[tech.selectedIndex].id, 10);
var hours = parseInt(document.getElementById("hours").value, 10);

请注意,它parseInt需要一个参数来指定基数。你几乎总是想要 base 10

于 2013-08-14T23:07:09.383 回答
0

Try changing this line:

var total = techprice * hours + serviceprice;

to

var total = techprice * hours + parseFloat(serviceprice);

I suspect 'servicePrice' is a string, and it will then try to concatenate the first value (let's say: 100) with the second value (which is, not a number, but a string, let's say 'test'), the result being '100test'.

于 2013-08-14T23:05:31.540 回答
0

尝试首先使用parseInt将字符串转换为 int或使用parseFloat浮动

于 2013-08-14T23:06:32.803 回答
0

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

var total = -(-techprice * hours - serviceprice);

甚至:

var total = techprice * hours -(-serviceprice);

它们都消除了模棱两可的 + 运算符。

于 2020-09-03T08:01:31.370 回答