2013-09-04 2 views
0

Я попытался использовать Plus арифметической операции для расчета значений 2 ввода чисел типа текста, но мой результат были ценности «вместе», как это:Plus Арифметические операции

  • Значение один: 5
  • Значение две: 5

Результат

55 

Wanted Результат

10 

Код

<script type="text/javascript"> 
    function cal(){ 
    var plus = document.getElementById('plus').value, 
     plus1 = document.getElementById('plus1').value; 
    var x = plus + plus1; 
    var result = document.getElementById('result'); 
    if(result.value == ""){ 
    result.innerHTML = "?"; 
    } 
    else{ 
    result.innerHTML = x; 
    } 
    } 
</script> 

<input type="text" id="plus" /> + <input type="text" id="plus1" /> = <span id="result"></span> 

Как я могу получить плюс результат вместо пары чисел вместе?

+1

Вы должны использовать ParseInt разобрать их как целые числа. Здесь вы объединяете 2 строки. –

+0

Не возражаете ли вы дать мне пример? Я не знаю этого метода. – Yotam

ответ

0

Вам нужно разобрать их к типу Integer:

var x = parseInt(plus) + parseInt(plus1); 

Затем вы можете использовать isNaN(), чтобы определить, был ли это допустимая операция или нет: (обратите внимание, что я проверяю значение x не полученной продукции)

if(isNaN(x)){ 
result.innerHTML = "?"; 
} 
else{ 
result.innerHTML = x; 
} 

Жизнь демо: http://jsfiddle.net/4KB5Y/3/

+0

Это сработало. – Yotam

+0

Подождите пару минут .. – Yotam

+0

Я замечаю, что когда я ничего не пишу, дайте мне NaN (Не номер), могу ли я проверить, не является ли значение не числом и заменить его «?», Если возможно, отредактируйте свой ответ. – Yotam

0

Оберните оба плюс и плюс1 в parseInt(), чтобы вы добавляли вместо конкатенации.

var plus = parseInt(document.getElementById('plus').value), 
    plus1 = parseInt(document.getElementById('plus1').value); 
2

Вы можете попробовать это:

function cal(){ 
    var plus = +document.getElementById('plus').value, 
     plus1 = +document.getElementById('plus1').value; 
    var x = plus + plus1; 
    var result = document.getElementById('result'); 
    if(isNaN(plus) || isNaN(plus1) || result.value == ""){ 
    result.innerHTML = "?"; 
    } 
    else{ 
    result.innerHTML = x; 
    } 
    } 

Обратите внимание на + признаки, которые преобразуют две строковые значения чисел.

+0

В настоящее время это единственный, который правильно преобразует входные значения в номера – Ian

+0

@Ian Что неверно в отношении других? – deceze

+0

@deceze Где OP говорит, что они принимают только * целые числа *? Пример с 5 и 5, конечно, но они ожидают ** номеров **. 'parseInt' отбивает любые десятичные знаки. – Ian

1

Все значения, которые вы получаете от входных элементов в DOM, будут строками.
Javascript использует + как для конкатенации строк, так и для добавления.
Для того, чтобы понять, вы хотите добавить номера вместо конкатенации строк, вы должны убедиться, что ваши ценности номер:

parseInt(plus, 10) + parseInt(plus1, 10) 

Да, это один из самых основных и часто встречающихся подводных камней в Javascript ,

+1

Обратите внимание, что здесь очень важно включить здесь «радиус» 10, чтобы вы не удивились результатам в неправильной базе для некоторых входов. – deceze

+0

Также обратите внимание на комментарии @ Ian [здесь] (http://stackoverflow.com/questions/18614374/plus-arithmetic-operation/18614471?noredirect=1#comment27400276_18614471). – deceze

2
var plus = parseInt(document.getElementById('plus').value, 10), 
    plus1 = parseInt(document.getElementById('plus1').value, 10); 

Это сделает то, что вы хотите.

+2

Не забудьте указать радиус. – JJJ

+0

О да, я сейчас исправлю. –

+0

Если вы скопируете-вставить из чужого ответа, сначала убедитесь, что их код работает. – JJJ

-1

http://jsfiddle.net/BLGLe/

<script type="text/javascript"> 
    function cal(){ 
    var plus = parseInt(document.getElementById('plus').value), 
     plus1 = parseInt(document.getElementById('plus1').value); 
    var x = plus + plus1; 
    var result = document.getElementById('result'); 
    if(result.value == ""){ 
    result.innerHTML = "?"; 
    } 
    else{ 
    result.innerHTML = x; 
    } 
    } 
</script> 

<input type="text" id="plus" /> + <input type="text" id="plus1" /> = <span id="result"></span> 
+0

Почему я получил нижний план? Не знал, что рабочее решение может быть сокращено. – Jacques

+0

Я не тот, кто вас подал, но я хотел бы ответить на ваш вопрос. Вероятно, они это сделали, потому что вы ничего не объяснили. –

+0

Правильно, и парень, который разместил только это: «' var plus = parseInt (document.getElementById ('plus'). Значение, 10), plus1 = parseInt (document.getElementById ('plus1'). Value, 10) ; ' Это сделает то, что вы хотите. Получил две ноты. Похоже на то, что я опубликовал. – Jacques

0

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

var plus = parseInt(document.getElementById('plus').value, 10), 
plus1 = parseInt(document.getElementById('plus1').value, 10); 

или

var x = parseInt(plus , 10) + parseInt(plus1 , 10) ; 
Смежные вопросы