Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.01.2016, 12:21
Интересующийся
Отправить личное сообщение для hbsv Посмотреть профиль Найти все сообщения от hbsv
 
Регистрация: 06.01.2016
Сообщений: 27

Усовершенствовать простой javascript Калькулятор!
Здравствуйте Форумчане!

Нужна небольшая помощь, решил начать изучать "html css javascript",

и получил задание написать простейший калькулятор, за основу взял html + javascript:

<body>

<form name="taschenrechner" id="calculator">
          <table>
          <tr>
          <td>
          
                 <input type="text" name="input" size="16" class="display">
               
                             
          </td>
          </tr>
          <tr>
          <td class="buttons">
      

          <input type="button" name="ein" value="1" OnClick="taschenrechner.input.value += '1'">
          <input type="button" name="zwei" value="2" OnClick="taschenrechner.input.value += '2'">
          <input type="button" name="drei" value="3" OnClick="taschenrechner.input.value += '3'">
          <input type="button" name="add" value="+" onclick="taschenrechner.input.value += '+'" >
          <br>
          <input type="button" name="vier" value="4" OnClick="taschenrechner.input.value += '4'">
          <input type="button" name="funf" value="5" OnClick="taschenrechner.input.value += '5'">
          <input type="button" name="sechs" value="6" OnClick="taschenrechner.input.value += '6'">
          <input type="button" name="sub" value="-" OnClick="taschenrechner.input.value += '-'">
          <br>
          <input type="button" name="sieben" value="7" OnClick="taschenrechner.input.value += '7'">
          <input type="button" name="acht" value="8" OnClick="taschenrechner.input.value += '8'">
          <input type="button" name="neun" value="9" OnClick="taschenrechner.input.value += '9'">
          <input type="button" name="zehn" value="x" OnClick="taschenrechner.input.value += '*'">
          <br>
          <input type="button" name="clear" value="c" OnClick="taschenrechner.input.value = ''">
          <input type="button" name="null" value="0" OnClick="taschenrechner.input.value += '0'">
          <input type="button" name="macht" value="=" OnClick="taschenrechner.input.value = eval(taschenrechner.input.value)">
          <input type="button" name="div" value="/" OnClick="taschenrechner.input.value += '/'">
      </td>
      </tr>
      </table>

</form>


</body>


и css:

@charset "utf-8";
/* CSS Document */


* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
	
	
	font: bold 14px Arial, sans-serif;
}


html {
	height: 100%;
	background: white;
	background: radial-gradient(circle, #fff 20%, #ccc);
	background-size: cover;
}

#calculator * {font-size: 20px;}
#calculator table {
	border: solid 3px silver; 
	border-spacing: 3px; 
	background-color: #EEE; 
	}
#calculator table td {border-spacing: 3px;}
#calculator table {margin: 100px auto;}
input.display {
	width: 275px; 
	height:40px; 
	text-align: right;
	}
td.buttons {border-top: solid 1px silver;}	
input[type= button] {
	width: 65px; 
	height: 50px;
	}

</style>


И мне кажется, что выглядит все очень слабенько, поэтому хочу до усовершенствовать, а именно:

1) Улучшить javascript путем вынесения обработчиков во внешние функции (отделение во внешний файл);
2) Вместо имен объектов использовать идентификаторы и обращаться к ним через GetElementByID;

PS (Так же брал другой скрипт, красивый калькулятор с thecodeplayer , мне все очень понравилось, потратил на него 2 дня, но javascript показался мне очень сложным, не могу его понять, я мне нужно будет потом объяснить что к чему) (Написал для того, что может кто знает этот скрипт и сможет мне объяснить)))

Обращаюсь на форум как в последнюю инстанцию, т.к. времени у меня осталось до вечера, и смогу ли все успеть не факт, поэтому буду очень рад любому совету и любой помощи.

Заранее очень благодарен
С ув. Сергей!

Последний раз редактировалось hbsv, 06.01.2016 в 12:33.
Ответить с цитированием
  #2 (permalink)  
Старый 07.01.2016, 00:00
JSN JSN вне форума
Аспирант
Отправить личное сообщение для JSN Посмотреть профиль Найти все сообщения от JSN
 
Регистрация: 01.09.2012
Сообщений: 57

Здравствуйте, Сергей.
Я извиняюсь, если поздновато, но минут 15 назад

Сам я бы написал по-другому, но если пересмотреть ваш код то вот мои мысли:
Code

А в плане общих советов по изучению программирования - начинайте с теории. Математика, структуры данных и алгоритмы. В частности калькулятор можно написать намного лучше используя обратную польскую запись, например.

Но это все лирика - удачи. Если есть вопросы - пишите

Последний раз редактировалось JSN, 07.01.2016 в 00:09.
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2016, 01:14
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

JSN, а еще лучше использовать http://learn.javascript.ru/event-delegation, ибо

Все это

Цитата:
OnClick="addInput(x)"
заменяется этим

document.getElementById('calculator').onclick = function(e) {
    // TODO
    this.input.value += e.target.value;
}
Ответить с цитированием
  #4 (permalink)  
Старый 29.01.2016, 23:16
Интересующийся
Отправить личное сообщение для hbsv Посмотреть профиль Найти все сообщения от hbsv
 
Регистрация: 06.01.2016
Сообщений: 27

Сообщение от JSN Посмотреть сообщение
Здравствуйте, Сергей.
Я извиняюсь, если поздновато, но минут 15 назад

Сам я бы написал по-другому, но если пересмотреть ваш код то вот мои мысли:
Code

А в плане общих советов по изучению программирования - начинайте с теории. Математика, структуры данных и алгоритмы. В частности калькулятор можно написать намного лучше используя обратную польскую запись, например.

Но это все лирика - удачи. Если есть вопросы - пишите
Не могу заставить функцию "clear" работать и после запятой выставляет много нулей.

Если не сложно объясни пожалуйста логику:

function addInput(x) {
    input.value += x;
    if (!c)
        a[0] = a[0] * 10 + +x;
    else
        a[1] = a[1] * 10 + +x;
}
Ответить с цитированием
  #5 (permalink)  
Старый 29.01.2016, 23:17
Интересующийся
Отправить личное сообщение для hbsv Посмотреть профиль Найти все сообщения от hbsv
 
Регистрация: 06.01.2016
Сообщений: 27

Сообщение от Lemme Посмотреть сообщение
JSN, а еще лучше использовать http://learn.javascript.ru/event-delegation, ибо

Все это



заменяется этим

document.getElementById('calculator').onclick = function(e) {
    // TODO
    this.input.value += e.target.value;
}
Можно один пример, как заменить, я по пробовал но не получилось.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
калькулятор на javascript vera0907 Events/DOM/Window 7 24.03.2015 15:12
Простой калькулятор под Joomla 3.3 artvasya Общие вопросы Javascript 0 24.02.2015 20:04
Простой калькулятор AlexFoxx Events/DOM/Window 12 18.02.2014 15:41
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34