Не удается получить значения JavaScript для правильного добавления

0

Кажется, я не могу получить свои ценности из этой формы, чтобы добавить способ, которым они должны. Я хочу, чтобы все эти входные данные диапазона добавляли свои значения к одному номеру.

Как например: 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>
  • 0
    он дает вам строки и объединяет их, разбирает их как целые
Теги:

3 ответа

3
Лучший ответ

Вам нужно преобразовать строки в числа:

document.getElementById("demo").innerHTML=Number(x)+Number(y)+Number(z)+Number(e);
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 преобразует число в строку и выполняет операцию конкатенации.

В этом случае все, что у вас есть, это строки.

0
var x = parseInt(document.getElementById("range1").value);

По умолчанию getElementById рассматривается как строка. Поэтому вам нужно будет преобразовать его в целое число, если вы хотите рассматривать его как целое.

  • 0
    В будущем вы можете расширить это и объяснить, почему это требуется, а не просто публиковать код с помощью «и т. Д.».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню