Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
 
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
#1

Подкорректировать калькулятор - JavaScript

09.10.2016, 17:30. Просмотров 776. Ответов 49
Метки нет (Все метки)

Здравствуйте, как сделать, чтобы:

1)поле вывода после выбора операции опустошалось и выводилось следующее (как в калькуляторе)
2) при наборе числа, чтобы убирался висящий ноль
3) как обычно делают стилевое оформление калькулятора?
4) как исключить деление на ноль?
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a = 0;
d = '';
function fn(p)
{
a = parseFloat(document.getElementById('p1').value);
d = p;
}
function doit()
{
var b = parseFloat(document.getElementById('p1').value);
if (d=='+') { r = a + b; }
else {
    if (d=='-') {r=a-b;}
        else {
          if (d=='*') {r=a*b;}
            else {r=a/b;}
        }
  }
document.getElementById('p1').value = r;
}
function cl()
{
a = 0;
d = '';
document.getElementById('p1').value='0';
}
function addd(dg)
{
document.getElementById('p1').value += dg;
}
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form action="">
<input type="text" id="p1" name="p1" value="0"/>
<br>
<input type="button" value="C" onclick="cl();" />
<br>
<input type="button" value="1" onclick="addd('1');" />
<input type="button" value="2" onclick="addd('2');" />
<input type="button" value="3" onclick="addd('3');" /> <br />
<input type="button" value="4" onclick="addd('4');" />
<input type="button" value="5" onclick="addd('5');" />
<input type="button" value="6" onclick="addd('6');" /> <br />
<input type="button" value="7" onclick="addd('7');" />
<input type="button" value="8" onclick="addd('8');" />
<input type="button" value="9" onclick="addd('9');" /> <br />
<input type="button" value="0" onclick="addd('0');" />
 
<br>
<input type="button" value="+" onclick="fn('+');" />
<input type="button" value="-" onclick="fn('-');" />
<input type="button" value="*" onclick="fn('*');" />
<input type="button" value="/" onclick="fn('/');" />
<input type="button" value="=" onclick="doit();" />
</form>
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2016, 17:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подкорректировать калькулятор (JavaScript):

как подкорректировать работу меню
Всем здравствуйте! Есть меню (подробности во вложении). При наведенеии курсора...

Вычисление кол-ва совпадений, необходимо подкорректировать код
Здравстувуйте! Необходимо было написать код, вычисляющий кол-во совпадений по...

Калькулятор
Написал калькулятор, а он зараза не работает, помогите выявить ошибку. Заранее...

Калькулятор
Не могу понять как работает javascript в коде HTML может чего- то забыл...

Калькулятор на JS
ребят всем привет ! пишу windows like калькулятор на JS не могу продумать 1...

калькулятор JS
доделать нужно мучаюсь уже две недели Реализовать на языке HTML, CSS,...

49
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
10.10.2016, 13:25  [ТС] #21
Azdeman, спасибо Вам большое. На сегодня шабаш. Хорошего вечера.

Добавлено через 13 часов 39 минут
Azdeman, Александр, здравствуйте, а как делается точка и кнопка "%"?
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
10.10.2016, 13:33 #22
Цитата Сообщение от Mr.Gadget Посмотреть сообщение
Александр, здравствуйте, а как делается точка и кнопка "%"
по аналогии же.
else if () и поехал как там.
1
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
10.10.2016, 13:49  [ТС] #23
Azdeman, а там же в калькуляторе она должна считать N% от числа a и прибавление к числу а N%?

Добавлено через 12 минут
Azdeman, как написать сами формулы для рассчета процентов? Посмотрел, как оно должно работать.
Она должна считать N% от числа a и прибавление к числу а N% следующим образом.

ПРОЦЕНТ ОТ ЧИСЛА
Набираем число (500), нажимаем кнопку умножить (*), выбираем количество процентов (5), нажимаем кнопку процента (%). После нажимаем кнопку Равно. 500*5% = 25.


ПРИБАВИТЬ К ЧИСЛУ ПРОЦЕНТ
Набираем число (500), нажимаем кнопку прибавить (+), выбираем количество процентов (5), нажимаем кнопку процента (%). После нажимаем кнопку Равно. 500+5% = 525.

Как реализовать эти 2 действия? Тем путем получится?
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
10.10.2016, 14:42 #24
Логически если подумать,то конечно же сделать проверку в переменной b в функции doit знак %, и если он есть то уже вычеслять по формуле
500*5% = 25.
500*5/100 = 25
Проше простого
Javascript
1
2
3
4
5
6
7
if (d=='*') {
if(b.substr(-1)=='%'){
 r=a*b/100;
}else{
r=a*b;
}
}
И так с каждой операции.
1
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
10.10.2016, 15:17  [ТС] #25
Azdeman, написал вот так:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
function percent()
  {
        if (d=='*') 
  {
        if(b.substr(-1)=='%')
  {
        r=a*b/100;
  }     else
  {
        r=a*b;
  }
  }
    }
HTML5
1
<input type="button" value="%" onclick="addd('%');" />
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
10.10.2016, 15:22 #26
а почему addd если у вас было в fn() операции
1
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
10.10.2016, 17:24  [ТС] #27
Azdeman, поменял. как по сути нужно правильно проверять эту кнопку?

Добавлено через 1 час 51 минуту
Azdeman, поможете?
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
10.10.2016, 19:09 #28
Вот , считай с 0 написал.. И html так же замените на мой.. всё замените.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
_ = document.getElementById('p1');
    function addd(a){
            if(_.value ==0){
                _.value='';
            }else if(a=='sqrt'){
                var _result = Math.sqrt(_.value);
                _.value = '';
                _.value = _result;
                    return;
            }else if(a=='1/a'){
                var _result = 1/_.value;
                _.value = '';
                _.value = _result;
                    return;
            }
                _.value +=a;
    }
    function doit(){
        var reg = _.value.match(/^(\d+)([+-/*])(\d+)%/);
        if(reg){
                _.value='';
                _.value=eval('reg[1]+reg[2]+reg[3]/100');
            
        }
            result = eval(_.value);
                _.value = '';
                _.value = result;
                
    }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<form action="">
<input type="text" id="p1" name="p1" value="0"/>
<br>
 
<br>
<input type="button" value="1" onclick="addd('1');" />
<input type="button" value="2" onclick="addd('2');" />
<input type="button" value="3" onclick="addd('3');" /><br>
 
<input type="button" value="4" onclick="addd('4');" />
<input type="button" value="5" onclick="addd('5');" />
<input type="button" value="6" onclick="addd('6');" /> <br/>
 
<input type="button" value="7" onclick="addd('7');" />
<input type="button" value="8" onclick="addd('8');" />
<input type="button" value="9" onclick="addd('9');" /><br />
<input type="button" value="0" onclick="addd('0');" />
 
<input type="button" value="C" onclick="cl();" />   
<input type="button" value="=" onclick="doit();" />
 
 <br />
<br>
<input type="button" value="%" onclick="addd('%')" />
<input type="button" value="+" onclick="addd('+');" />
<input type="button" value="-" onclick="addd('-');" /><br />
<input type="button" value="*" onclick="addd('*');" />
<input type="button" value="/" onclick="addd('/');" /> 
<input type="button" value="sqrt" onclick="addd('sqrt');" /><br/>
<input type="button" value="1/a" onclick="addd('1/a');" />
Добавлено через 7 минут
Цитата Сообщение от Azdeman Посмотреть сообщение
cl();
функцию cl() свою вставите в мой код.
1
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
12.10.2016, 19:02  [ТС] #29
Azdeman, здравствуйте, Александр, ошибка в строчке 39 (JS) типа не удалось получить свойство "value" ссылки, значение которой не определено или является NULL.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 a = 0;
      d = '';
function fn(p)
{
a = parseFloat(document.getElementById('p1').value);
d = p;
document.getElementById('p1').value='';
}
function doit()
{
 
var b = parseFloat(document.getElementById('p1').value);
if (d=='+') { r = a + b; }
else {
    if (d=='-') {r=a-b;}
        else {
            if (d=='*') {r=a*b;}
              else {
                    if (d=='/') {r=a/b;}
                        else {
                            if (d=='sqrt') {r=Math.sqrt(a);
                        
                           }
                      }
                 }
            }
   }
document.getElementById('p1').value = r;
}
function cl()
{
a = 0;
d = '';
document.getElementById('p1').value='0';
}
 
_= document.getElementById('p1');
    function addd(a){
            if(_.value==0){
                _.value='';
            }else if(a=='sqrt'){
                var _result = Math.sqrt(_.value);
                _.value ='';
                _.value =_result;
                    return;
            }else if(a=='1/a'){
                var _result = 1/_.value;
                _.value ='';
                _.value =_result;
                    return;
            }
                _.value +=a;
    }
    function doit(){
        var reg = _.value.match(/^(\d+)([*/+-])(\d+)%/);
        if(reg){
                _.value='';
                _.value=eval('reg[1]+reg[2]+reg[3]/100');
            
        }
            result = eval(_.value);
                _.value = '';
                _.value = result;
                
    }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<form action="">
<input type="text" id="p1" name="p1" value="0"/>
<br>
 
<br>
<input type="button" value="1" onclick="addd('1');" />
<input type="button" value="2" onclick="addd('2');" />
<input type="button" value="3" onclick="addd('3');" /><br>
 
<input type="button" value="4" onclick="addd('4');" />
<input type="button" value="5" onclick="addd('5');" />
<input type="button" value="6" onclick="addd('6');" /> <br/>
 
<input type="button" value="7" onclick="addd('7');" />
<input type="button" value="8" onclick="addd('8');" />
<input type="button" value="9" onclick="addd('9');" /><br />
<input type="button" value="0" onclick="addd('0');" />
 
<input type="button" value="C" onclick="cl();" />   
<input type="button" value="=" onclick="doit();" />
 
 <br />
<br>
<input type="button" value="%" onclick="addd('%')" />
<input type="button" value="+" onclick="addd('+');" />
<input type="button" value="-" onclick="addd('-');" /><br />
<input type="button" value="*" onclick="addd('*');" />
<input type="button" value="/" onclick="addd('/');" /> 
<input type="button" value="sqrt" onclick="addd('sqrt');" /><br/>
<input type="button" value="1/a" onclick="addd('1/a');" />
</form>
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
12.10.2016, 19:59 #30
Цитата Сообщение от Mr.Gadget Посмотреть сообщение
function fn(p)
{
a = parseFloat(document.getElementById('p1').value);
d = p;
document.getElementById('p1').value='';
}
function doit()
{
var b = parseFloat(document.getElementById('p1').value);
if (d=='+') { r = a + b; }
else {
* * if (d=='-') {r=a-b;}
* * * * else {
* * * * * * if (d=='*') {r=a*b;}
* * * * * * * else {
* * * * * * * * * * if (d=='/') {r=a/b;}
* * * * * * * * * * * * else {
* * * * * * * * * * * * * * if (d=='sqrt') {r=Math.sqrt(a);
}
* * * * * * * * * * * }
* * * * * * * * *}
* * * * * * }
* *}
document.getElementById('p1').value = r;
}
function cl()
{
a = 0;
d = '';
document.getElementById('p1').value='0';
}
Зачем вам вот это? я же сказал убрать это раз.
2-е.. может вам исходник скинуть ?
0
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
12.10.2016, 20:05  [ТС] #31
Azdeman, убрав, возникает та же ошибка в том же месте.
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
12.10.2016, 20:24 #32
Откройте index.html с помощью браузера
js_project — копия.rar
0
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
16.10.2016, 19:18  [ТС] #33
Azdeman, Александр, здравствуйте! Кнопка процент работает неправильно, к сожалению.
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
16.10.2016, 19:20 #34
Цитата Сообщение от Mr.Gadget Посмотреть сообщение
Кнопка процент работает неправильно, к сожалению.
что не правильно?
0
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
16.10.2016, 19:23  [ТС] #35
ПРОЦЕНТ ОТ ЧИСЛА
Набираем число (500), нажимаем кнопку умножить (*), выбираем количество процентов (5), нажимаем кнопку процента (%). После нажимаем кнопку Равно. 500*5% =500*25=12500. (Вот здесь я вас ввел в заблуждение, простите!)


ПРИБАВИТЬ К ЧИСЛУ ПРОЦЕНТ Набираем число (500), нажимаем кнопку прибавить (+), выбираем количество процентов (5), нажимаем кнопку процента (%). После нажимаем кнопку Равно. 500+5% = 525.
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
16.10.2016, 19:28 #36
Цитата Сообщение от Mr.Gadget Посмотреть сообщение
500*5% =500*25=12500. (Вот здесь я вас ввел в заблуждение, простите!)
дак это меняется за 10 секунд.
Цитата Сообщение от Mr.Gadget Посмотреть сообщение
После нажимаем кнопку Равно. 500+5% = 525.
проверку сделать, если + по другой формуле считаем.
0
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
16.10.2016, 19:29  [ТС] #37
Azdeman, подскажите, что нужно поменять в коде?
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
16.10.2016, 19:37 #38
Цитата Сообщение от Azdeman Посмотреть сообщение
Javascript
1
2
3
4
if(reg){
 _.value='';
 _.value=eval('reg[1]+reg[2]+reg[3]/100');
}
Вот тут. reg[2] это + - / * -- то что вы написали в калькуляторе
reg[1] Это первое число
reg[3] это второе число перед %
0
Mr.Gadget
Фиговый студент
48 / 6 / 7
Регистрация: 26.09.2013
Сообщений: 535
Записей в блоге: 1
16.10.2016, 19:44  [ТС] #39
Azdeman,
0
Azdeman
Фрилансер
Эксперт HTML/CSSЭксперт PHP
1734 / 1277 / 579
Регистрация: 12.01.2011
Сообщений: 5,074
16.10.2016, 19:46 #40
Цитата Сообщение от Mr.Gadget Посмотреть сообщение
reg[1]+reg[2]/100+reg[3]
reg[2] -- это + - / * (смотря какую вы операцию написали)
вы после + сразу делите на 100. Это не правильно.
например 500*25%
так как вы показали это будет 500*/10025%
0
16.10.2016, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2016, 19:46
Привет! Вот еще темы с решениями:

калькулятор
Есть вот такой список, поле ввода текста, и кнопка расчитать. Как записать...

калькулятор
что надо сделать чтобы создать такой калькулятор ?? &lt;html&gt; &lt;head&gt;...

Калькулятор
Добрый день. Сделал калькулятор по примерам. Далее нужно его модернизировать....

Калькулятор
Ребят, доброго времени суток. Не подскажете как организовать такой калькулятор?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru