Калькулятор: получить общую сумму от одного входа

В настоящее время я строю свой первый калькулятор в jQuery, и у меня есть некоторые проблемы с общей суммой значения на входе. Я не использую более одного ввода, потому что хочу сделать его простым и легким в использовании. Код ниже печатает NaN и я не понимаю почему.

$('body').on('click', '#method-getsum', function() {
    var sum = 0;
    var string = $('input[name="fieldtext-calculate"]').val();

    if(string.length != 0) {
        sum += Number(string);
    }

    alert(sum);
});

Я что-то пропустил? Вы можете увидеть все это в действии здесь: http://jsfiddle.net/edgren/QTjWR/ (эта демонстрация содержит правильное решение с eval функция (мой калькулятор не для реального проекта. Просто с проектом "тренировка")

Заранее спасибо.

2 ответа

Решение

Когда вы вводите что-то вроде 1+2, твой код потом позвонит Number("1+2"), Это неверно, так как Number() ожидает единственное число (не дополнение) в качестве аргумента. Он не будет выполнять операции синтаксического анализа и интерпретации для вас, вы должны написать код самостоятельно.

Если это просто игрушечный проект, используйте eval вместо Number (во избежание eval в реальных проектах это создает проблемы безопасности).

Возможно, вы используете ключевое слово для имени переменной. Попробуйте изменить код на:

var fieldText = $('input[name="fieldtext-calculate"]').val();

if(fieldText.length != 0) {
    sum += Number(fieldText );
}

EDIT Nevermind, значение, которое возвращается из $('input[name="fieldtext-calculate"]').val(); это строка '7 + 8 + 9'. Попробуйте получить определенное значение, разделив на + войдите, чтобы получить числа и массив, затем переберите массив.

Другие вопросы по тегам