Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Арифметические действия (https://javascript.ru/forum/misc/27366-arifmeticheskie-dejjstviya.html)

Anastasiy17 10.04.2012 22:40

Арифметические действия
 
Вот такая задачка:
Создайте Web-страницу, в которой выполняются арифметические действия над двумя операндами. В первом текстовом поле вводятся два числовых операнда, между которыми должен находиться один из знаков арифметических действий: "+", "-", "*" или "/". При нажатии кнопки "Вычислить" выполняется соответствующая арифметическая операция, и результат выводится во втором текстовом поле. Если введенный операнд не является правильным арифметическим выражением, во втором текстовом поле выводится сообщение "Ошибка".

Я не могу понять алгоритм, как в одной строке писати числа и оно будет их просчитывать....
Я начинала писать код, если вводить в 2 рядках, и потом это применить к своему заданию:
<script>

function calc1 () {
var a1=document.getElementById("1st");
var a2=document.getElementById("2nd");
var pRez=document.getElementById("rezult");
if (parseInt(a1.value)&&parseInt(a2.value)) {
	var rez=parseInt(a1.value)+parseInt(a2.value);
	pRez.value=rez;

Но пока безуспешно....
Может у кого то есть идеи что бы каждое действие описывалось. Ну тоисть провирялось введеное, а потом если там есть +-*/ выполнялось действие. Никак не могу понять как это зделать)
Посмотрите, пожалуйста)

dmitriymar 10.04.2012 23:03

if( parseInt("1"))
 {
alert(1)
}


if( parseInt("n1"))
 {
alert(1)
}
else alert(2)

GuardCat 10.04.2012 23:15

<!DOCTYPE html>
<html>
	<head>
		<title>Простой калькулятор</title>
	</head>
	<body>
		<input type = "text" id = "forCalculate">
		<input type = "button" value = "Вычислить" id = "run">
		<input type = "text" id = "result" disabled>
		<script>
			function gid(id) {
				return document.getElementById(id);
			}
			
			gid("run").onclick = function() {
				var res, errMsg = "Ошибка";
				try {
					res = eval(gid("forCalculate").value)
				} catch(e) {
					res = errMsg;
				}
				
				if(isNaN(+res)) res = errMsg;
				
				gid("result").value = res; 
			}
		</script>
	</body>
</html>

В лом писать много, предлагаю простой вариант.

Anastasiy17 10.04.2012 23:25

GuardCat,
Большое спасибо!)
Но у меня есть вопрос, какая функцию выполняет gid?
Просто я представляла себе эту програму, в плане, что нада описывать каждую операцию (+-*/).

GuardCat 10.04.2012 23:30

gid в данном случае --- просто сокращение, чтобы не писать всё время document.getElementById. Посмотрите, эта функция в начале же описана. Как вы представляли понял, делать так не вижу смысла и просто ленюсь. Отлично работает eval, к тому же с ним можно вводить длинные выражения (2 + 7 - 89 + 767 / 11 * 8).

FINoM 11.04.2012 01:05


Anastasiy17 11.04.2012 01:12

FINoM,
Извените, а что это означает?

GuardCat 11.04.2012 06:09

FINoM, шутку юмора оценил. Да-да, можно не только вычислять, но ещё и скрипты писать в том поле. В какой-то теме melky (по-моему) рассказывал о последствиях такого ужаса: теперь пользователь сможет сам у себя украсть куки и логиниться под собой на всех сайтах.

Anastasiy17 12.04.2012 20:43

Может у кого то есть идеи что бы каждое действие описывалось. Ну тоисть провирялось введеное, а потом если там есть +-*/ выполнялось действие. Посмотрите пожалуйста) Никак не могу понять как это зделать)

Anastasiy17 13.04.2012 00:55

GuardCat,
Могли бы Вы объяснить, как именно работает даная програма.В особенно сти эта часть:
try {
res = eval(gid("forCalculate").value)
} catch(e) {
res = errMsg;
}

if(isNaN(+res)) res = errMsg;

gid("result").value = res;
}
Извените, еще раз за беспокойство. Просто очень нада именно понять програму)


Часовой пояс GMT +3, время: 05:22.