Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с калькулятором (https://javascript.ru/forum/misc/18049-pomogite-s-kalkulyatorom.html)

ksa 15.06.2011 10:42

Цитата:

Сообщение от Sovereign
преподов я ни в чем не виню

Это хорошо... А то у нас тут обиженых знаешь сколько! :)

Sovereign 15.06.2011 10:48

Skipp спасибо тебе большое добрый человек, так даже намного проще чем я пытался, буду пробовать дальше.

Sovereign 15.06.2011 10:51

to ksa на них воду возят, а я не хочу:) Спасибо за твой вариант, мы кое чего не проходили из этого, но тоже попробую!

Sovereign 15.06.2011 13:53

Кнопке равно присвоил функцию:
function ravno()
{
x=f1.txt.value;
f1.txt.value=eval(x);
};

Но теперь не получается написать функцию к кнопке проценты. eval определяет знак % как деление по модулю.
Вот:
<html>
<head>
<title>Java</title>
</head>
<body>
<table border='2'>
<tr>
<td>
<form name="f1">
<input type="text" name="txt">
<input type="button" onclick="f1.txt.value += 1" value="1"> 
<input type="button" onclick="f1.txt.value += 2" value="2">
<input type="button" onclick="f1.txt.value += this.value" value="-">
<input type="button" onclick="percent()" value="%">
<input type="button" onclick="ravno()" value="=">
<input type="button" onclick="reset()" value="C">
</td>
</tr>
</form>
<script>
function ravno()
{
x=f1.txt.value;
f1.txt.value=eval(x);
};
function reset()
{
if(x.length>0)f1.txt.value=0;
};
/*function percent()
{
?????
};*/
</script>
</body>
</html>

Sovereign 15.06.2011 13:57

И походу с нахождением обратного числа тоже не все так просто будет :(

Skipp 15.06.2011 14:08

Ух)
Как же всё сложно)
<form name="f1">
<input type="text" name="txt" readonly /><br/>
<input type="button" onclick="f1.txt.value += this.value" value="1" />
<input type="button" onclick="f1.txt.value += this.value" value="2" />
<input type="button" onclick="f1.txt.value += this.value" value="3" /><br/>
<input type="button" onclick="f1.txt.value += this.value" value="4" />
<input type="button" onclick="f1.txt.value += this.value" value="5" />
<input type="button" onclick="f1.txt.value += this.value" value="6" /></br>
<input type="button" onclick="f1.txt.value += this.value" value="7" />
<input type="button" onclick="f1.txt.value += this.value" value="8" />
<input type="button" onclick="f1.txt.value += this.value" value="9" /><br/>
<input type="button" onclick="f1.txt.value += this.value" value="0" />
<input type="button" onclick="f1.txt.value += this.value" value="+" />
<input type="button" onclick="f1.txt.value += this.value" value="-" /><br/>
<input type="button" onclick="f1.txt.value += this.value" value="*" />
<input type="button" onclick="f1.txt.value += this.value" value="/" />
<input type="button" onclick="f1.txt.value = eval(f1.txt.value)" value="=" />
</form>

Sovereign 15.06.2011 14:12

Это все получилось, не получается кнопку проценты(%) сделать и кнопку нахождение обратного числа (1/x). Т.е. если добавлю в кнопку %
<input type="button" onclick="f1.txt.value += this.value" value="%" />

то получается деление по модулю, а не проценты

trikadin 15.06.2011 14:38

Хм.. Неплохо бы узнать, что вы проходили, а что нет.

Я немного допилил код Skipp, правда не сделал кнопку процентов, но, мне кажется, подумав над тем, что тут написано, вполне можно сделать её и самому.

<form name="f1">
<input type="text" name="txt"  readonly /><br/>
<input type="button" onclick="f1.txt.value += this.value" value="1" />
<input type="button" onclick="f1.txt.value += this.value" value="2" />
<input type="button" onclick="f1.txt.value += this.value" value="3" /><br />
<input type="button" onclick="f1.txt.value += this.value" value="4" />
<input type="button" onclick="f1.txt.value += this.value" value="5" />
<input type="button" onclick="f1.txt.value += this.value" value="6" /><br />
<input type="button" onclick="f1.txt.value += this.value" value="7" />
<input type="button" onclick="f1.txt.value += this.value" value="8" />
<input type="button" onclick="f1.txt.value += this.value" value="9" /><br />
<input type="button" onclick="f1.txt.value += this.value" value="0" />
<input type="button" onclick="f1.txt.value += this.value" value="+" />
<input type="button" onclick="f1.txt.value += this.value" value="-" /><br />
<input type="button" onclick="f1.txt.value += this.value" value="*" />
<input type="button" onclick="f1.txt.value += this.value" value="/" />
<input type="button" onclick="f1.txt.value = this.value+'(' + f1.txt.value +')'" value="1/" /><br />
<input type="reset" value="C" />
<input type="button" onclick="f1.txt.value = eval(f1.txt.value)" value="=" />
</form>

Sovereign 15.06.2011 14:50

trikadin спасибо! проходили функции, массивы, операторы но очень бегло поэтому туплю(по javascript в общих чертах будет всего несколько уроков). Я примерно тоже самое сделал (выше есть мой сокращенный код) но расчет и очистку строки делал с помощью функции, а вот на процентах и расчете обратного числа застрял, спасибо за него. Конечно хотелось бы разобраться, а не тупо скопировать.

Sovereign 16.06.2011 06:28

Практически все получилось, осталось только расчет процентов добавить. Воспользовавшись примером от trikadin сделал нахождение обратного числа с помощью функции, поправьте если что-то сделал не правильно, а если правильно тоже скажите:
В форме создаю кнопку:
<form name="f1">
<input type="text" name="txt">
<input type="button" onclick="obratn()" value="1/x">
</form>


В скрипте функцию:
function obratn()
{
z =eval(1/f1.txt.value);
f1.txt.value=z;
}


C процентами пока не знаю что делать, в остальном калькулятор почти готов (осталось оформить и еще один знак добавить).


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