Страницы

Поиск по вопросам

воскресенье, 16 февраля 2020 г.

Сложение(+) в JavaScript

#javascript


Здравствуйте, при скрипте:

function pl(){
//document.getElementById('inp2').value
alert(document.getElementById('inp2').value+document.getElementById('inp2').value);
}


Если value=12,  выдает 1212.. Что и как нужно сделать, чтобы получилось 24? 
    


Ответы

Ответ 1



Аттрибуты являются строками и оператор + является для них операцией конкатенации. Для сложения строк как чисел, нужно явно распарсить строку в число. Например функция parseInt: alert(parseInt(document.getElementById('inp2').value)+parseInt(document.getElementById('inp2').value)); Еще есть вариант через унарный оператор +: var test1 = +document.getElementById('inp2').value; alert(test1+test1) На learn.javascript.ru можно прочитать подробней про преобразования. UPDATE Есть особенность работы parseInt: в разных браузерах строки, которые начинаются с 0 ( например '010') могут преобразоваться либо в восмеричную( в примере получится 8), либо в десятичную систему счисления. Описание на mdn. По спецификации ecmascript 5 по умолчанию явно задаётся десятичная система счисления, т.е. parseInt('010') -> 10

Ответ 2



используйте parseInt(строкаВвидеЧисла) function pl(){ if(document.getElementById('inp2').value == "") { alert("0"); } else { alert(parseInt(document.getElementById('inp2').value)+parseInt(document.getElementById('inp2').value)); } }

Ответ 3



value у inputа содержит строку. А сложение превращается в конкатенацию если хотя бы один из аргументов - строка. Чтобы привести строку к числу надо использовать унарный плюс. var s = "12", x = 12; console.log(JSON.stringify(s + s)); // "1212" console.log(JSON.stringify(s + x)); // "1212" console.log(JSON.stringify(x + s)); // "1212" console.log(JSON.stringify(x + x)); // 24 var y = +s; console.log(JSON.stringify(y + y)); // 24

Комментариев нет:

Отправить комментарий