Показать сообщение отдельно
  #1 (permalink)  
Старый 19.11.2017, 17:22
Интересующийся
Отправить личное сообщение для plug-ugly Посмотреть профиль Найти все сообщения от plug-ugly
 
Регистрация: 21.08.2017
Сообщений: 27

Калькулятор выдает NaN
Всем добрый вечер!
Помогите, кто чем может неопытному(

Пишу свой первый мини-проект "Калькулятор"
Проблема, что если алертом выводить результаты операций - выдает числа, если эти результаты записывать в $('#display').text() - выдает NaN

Подскажите на что обратить внимание(

<div id = "case">
			<div id = "screen"><p id = "display"></p></div>
			<div id = "buttons">
				<ul class = "row-first">
					<li><input id = 'reset' type = 'submit' value = 'R'/></li>
				</ul>
				<ul class = "row">
					<li><input class = 'btn' type = 'submit' value = '1'/></li>
					<li><input class = 'btn' type = 'submit' value = '2'/></li>
					<li><input class = 'btn' type = 'submit' value = '3'/></li>
					<li><input class = 'btn' type = 'submit' value = '+'/></li>
				</ul>
				<ul class = "row">
					<li><input class = 'btn' type = 'submit' value = '4'/></li>
					<li><input class = 'btn' type = 'submit' value = '5'/></li>
					<li><input class = 'btn' type = 'submit' value = '6'/></li>
					<li><input class = 'btn' type = 'submit' value = '-'/></li>
				</ul>
				<ul class = "row">
					<li><input class = 'btn' type = 'submit' value = '7'/></li>
					<li><input class = 'btn' type = 'submit' value = '8'/></li>
					<li><input class = 'btn' type = 'submit' value = '9'/></li>
					<li><input class = 'btn' type = 'submit' value = '*'/></li>
				</ul>
				<ul class = "row">
					<li><input class = 'btn' type = 'submit' value = '0'/></li>
					<li><input class = 'btn' type = 'submit' value = '.'/></li>
					<li><input class = 'btn' type = 'submit' value = '='/></li>
					<li><input class = 'btn' type = 'submit' value = '/'/></li>
				</ul>
			</div>
		</div>


//Объявление переменных
			var display = $('#display');
			var str = '';
			var btns = document.getElementsByClassName('btn');
			
			//Сброс
			$('#reset').click( function() {
				display.html(''); 
			});
			
			//Пробегаюсь по всем кнопкам
			for (let i = 0; i < btns.length; i++) {
				show_number(btns[i]);
			}
			
			//Вывожу числа на экран
			function show_number(button) {
				$(button).click(function() {
					var value = this.getAttribute('value');
					str += value;
					
					display.text(str);
					
					//При нажатии на равно происходит магия, а потом на дисплей выводится результат
					if (value === '=') {
						var slice_str = str.slice(0, str.length - 1);
						check_operation(slice_str);
						display.text(add);
					}
					
				});
			}

			//Определяем с какой операцией будет работы
			function check_operation(line) {
				var split = line.split('');
				for (let i = 0; i < split.length; i++) {
					switch (split[i]) {
						case '+' :
							var plus = line.split('+');
							add(plus);
							break;
						case '-' :
							var minus = line.split('-');
							deduct(minus);
							break;
						case '*' :
							var star = line.split('*');
							mult(star);
							break;
						case '/' :
							var fraction = line.split('/');
							divide(fraction);
							break;
					}
				}
			}
			
			function add(expr) {
				var sum = parseFloat(expr[0]) + parseFloat(expr[1]);
				//alert(sum); //Для отдалки
				
				//Неужели правда NaN?
				/*if (!isNaN(sum)) {
					return sum;
				} else {
					alert(sum);
				}*/
				return sum;
			}
			
			function deduct(expr) {
				var ded = parseFloat(expr[0]) - parseFloat(expr[1]);
				alert(ded);
			}
			function mult(expr) {
				var mul = parseFloat(expr[0]) * parseFloat(expr[1]);
				alert(mul);
			}
			
			function divide(expr) {
				var div = parseFloat(expr[0]) / parseFloat(expr[1]);
				alert(div);
			}
Ответить с цитированием