无法正确添加JavaScript值

时间:2013-12-16 16:52:17

标签: javascript html

我似乎无法从此表单中获取我的值以添加他们应该的方式。我希望所有这些范围输入都将它们的值添加到一个数字。

例如: range1是3 range2是2 range3是8 range4是5 所以我想要var txt = x + y + z + e;是18岁。但它是3285。

我该如何解决这个问题? JavaScript新手

<form id="frm1" action="" onmouseup="sistetest()">
0<input class="blackandorange" type="range" id="range1" name="points" value="2" min="0" max="10">10<br>
0<input class="blackandorange" type="range" id="range2" name="points" value="2" min="0" max="10">10<br>
0<input class="blackandorange" type="range" id="range3" name="points" value="2" min="0" max="10">10<br>
0<input class="blackandorange" type="range" id="range4" name="points" value="2" min="0" max="10">10<br>
</form>

<script>
function sistetest()
{
var x = document.getElementById("range1").value;
var y = document.getElementById("range2").value;
var z = document.getElementById("range3").value;
var e = document.getElementById("range4").value;

document.getElementById("demo").innerHTML=x+y+z+e;
}
</script>

2 个答案:

答案 0 :(得分:3)

您需要将字符串转换为数字:

document.getElementById("demo").innerHTML=Number(x)+Number(y)+Number(z)+Number(e);

答案 1 :(得分:1)

您从DOM获得的值总是字符串。你必须强迫他们成为数字:

var x = +document.getElementById("range1").value;
var y = +document.getElementById("range2").value;
var z = +document.getElementById("range3").value;
var e = +document.getElementById("range4").value;

是一种简单的方式。

JavaScript +运算符(双操作数版本)很棘手,因为它对字符串和数字都有意义, JavaScript规则实际上更喜欢数字语义的字符串语义。也就是说,如果向字符串(或字符串添加数字)添加数字,JavaScript会将数字转换为字符串并执行连接操作。

在这种情况下,你所拥有的只是字符串。