Jump to content
  • 0

Нестандартный калькулятор


mr__brainwash
 Share

Question

Здравствуйте, передо мной стоит задача построить калькулятор на JavaScript с использованием DHTML. А именно: нужно чтобы калькулятор был построен без id (не использовать идентификаторы вообще), а применить свойства : getElementById (), createElement (),createTextNode (), appendChild (), insertBefore (). Видел много разных примеров калькуляторов, но как применять там эти свойства так и не понял. Подскажите, пожалуйста .

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Мои универсальные функции: 

function $(str){	if(str[0] == "#")	{		return document.getElementById(str.substring(1));	}	if(str[0] == ".")	{		return document.getElementsByClassName(str.substring(1));	}	return document.getElementsByTagName(str);}function createElement(tag, id, parent){	var element = document.createElement(tag);	element.id = id;	parent.appendChild(element);	return element;}

Пример: http://jsfiddle.net/35pm2/

А DHTML уже устарел.

Link to comment
Share on other sites

  • 0

Почему не использовать id? Это первое средство. Если это задание от преподавателя, то скажите, что он долботряс и пусть идёт мести улицу, а не преподавать. А если от заказчика, то надо посылать такого заказчика как можно дальше — не его ума дело использовать id или нет.

  • Like 1
Link to comment
Share on other sites

  • 0

Нет, это зданаие дали мне при собеседовании на работу, говорят мол сделаешь - возьмем стажером на обучение. Я вот и ломаю себе голову каким образом применять эти свойства.

Про getElementById ошибся, его не нужно использовать. А вот createElement () и appendChild () нужно.

Link to comment
Share on other sites

  • 0

Уточнил задание, должно быть понятней: есть html страница, в которой подключены файлы скрипта и стиля. Скрипт загружается и подымает DOM, навешанный обработчиками. Естественно, пишется все используя ООП. Калькулятор состоит, как минимум, из нескольких объектов, которые обмениваются между собой событиями. К примеру, есть базовый объект "Кнопка", которую наследует объект "Кнопка 1". Она умеет кидать событие "Click", которое перехватывает некая сущность(пусть будет view), и объект, отрисовавший поле ввода. Получается иерархическая, распределенная модель. Кнопка  кидает событие с параметами, оно всплывает, его перехватывают вьюха и кто-то еще.  Кнопка - инициатор события, поле ввода только слушает, вьюха тоже слушает и хранит историю, чтобы можно было отменить операцию. И , если задача пойдет легко, можно выполнить это все в диалоге, который тоскается по экрану.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By ilyamio
      Здравствуйте. Имеется рабочий скрипт конвертера валют. https://ilyamio.github.io/currencyconverter/
      Мне необходимо изменить источник загрузки курсов на ЦБ РФ вот по этой ссылке: https://www.cbr.ru/scripts/XML_daily.asp
      А также мне необходимо установить ограничение на количество обращений к сайту ЦБ РФ - 1 раз в сутки. При частом обращении, могут заблокировать.
      Вот в этом js файле находятся настройки конвертера:
      const from_currencyEl = document.getElementById('from_currency'); const from_ammountEl = document.getElementById('from_ammount'); const to_currencyEl = document.getElementById('to_currency'); const to_ammountEl = document.getElementById('to_ammount'); const rateEl = document.getElementById('rate'); const exchange = document.getElementById('exchange'); from_currencyEl.addEventListener('change', calculate); from_ammountEl.addEventListener('input', calculate); to_currencyEl.addEventListener('change', calculate); to_ammountEl.addEventListener('input', calculate); exchange.addEventListener('click', () => { const temp = from_currencyEl.value; from_currencyEl.value = to_currencyEl.value; to_currencyEl.value = temp; calculate(); }); function calculate() { const from_currency = from_currencyEl.value; const to_currency = to_currencyEl.value; fetch(`https://api.exchangerate-api.com/v4/latest/${from_currency}`) .then(res => res.json()) .then(res => { const rate = res.rates[to_currency]; rateEl.innerText = `1 ${from_currency} = ${rate} ${to_currency}` to_ammountEl.value = (from_ammountEl.value * rate).toFixed(2); }) } calculate(); Как мне изменить настройки в этом файле чтобы курсы брались с https://www.cbr.ru/scripts/XML_daily.asp и включить ограничение на количество обращений по ссылке cbr.ru - 1 раз в сутки?
      Заранее спасибо всем, кто хотел помочь с решением этой задачи.
    • By Boba
      Добрый день, задача стоит - создать калькулятор который в реальном времени по курсу будет выводить ответ также ответ будет меняться (плавающий), помогите с чего начать или как привязаться к курсу на бирже, чтоб можно было X(мое значени) делить Y (пара курс\ плавающий) = Z (ответ плавающий)
       
    • By zhelezniy
      Добрый день
      Помогите пожалуйста сделать калькулятор на js чтобы он работал без кнопки равно.
      Чтобы было :
      поле ввода А
      поле ввода В
      Операция = (выпадающий список)
      А (знак операций) В = поле вывода ответа
       
      <html> <head> <meta charset="utf-8"> </head> <body> <div align=left><h2 class=s2>Калькулятор</h2> <form method=post action=calc.php> <p class=s1> A: <input type=text name=x> B: <input type=text name=y> <br> <br> <a>Операция = </a> <select name="test"> <option value="+">+</option> <option value="*">*</option> </select> <input type=submit name=sabmit value=Cчитать> </form> Пожалуйста очень нужно, чем быстрей тем лучше.
      Готов пополнить баланс телефона
    • By adrk00
      Добрый день! У меня есть сайт где продаем различные строительные материалы. Сейчас там таблицы с перечнем услуг и примерными ценами и как правило клиенты звонят что-бы уточнить что-то, найти. Это очень отнимает времени. Решили как-то автоматизировать дело, чтобы все расчеты, выбор материалов, комплектующие клиент смог выбрать и ему тут же отобразилась нужная цена. У фрилансеров поспрашивал, выходит очень дорого и много делать. Может есть ли какие-нибудь вообще сервисы онлайн для создания калькуляторов или расчетов. Чтобы я мог пусть и не самостоятельно, с чей нибудь помощью на первое время, попробовать создать то что мне нужно? 
    • By aizul
      Подскажите, пожалуйста, вот в этом коде:
      var plochad=(visota*shirina)/10000; var koefficient=1.25; var total=(tcena_okno+okno)*koefficient; необходимо чтобы koefficient был следующим:
      если площадь до 0,5 м2 то коэффициент 2;
      если 0,51-0,8 м2 то 1,5;
      если 0,81-1 м2 то 1,25;
      если больше 1 м2 то 1,25.
  • Обсуждения

    • Вот тут есть актуальный список бесплатных тестов с сертификацией https://www.classcentral.com/report/free-certificates/ Обратите внимание на HackerRank, там есть тест с сертификацией непосредственно по CSS
    • Нужно сверстать по картинке меню-бар. Не получается сделать вот это поле поиска <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta http-equiv="X-UA-Compatible" content="IE=edge">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title>     <style> .nav {     display: flex;     list-style-type: none;     padding-left: 0;     font-size: 17px;     text-transform: uppercase; } .nav > li > a {     color: #fff;     text-decoration: none; } .nav > li {     padding-left: 29px;     margin-left: 30px; } .header {     display: flex;     background-color: #31485b;     justify-content: space-between;     align-items: center; }   .sidebar {     width: 410px;     display: block;     padding-right: 20px;     margin: auto;     margin-left: 250px; }   ul.nav li a:hover {     background-color: #687c8d;     padding: 17.2px 35px; }   input[type="text"], input[type="search"] {   background-color: #687c8d;   width: 60%;   padding: 8px;   margin: 0 50px }   input[type="search"] {     color: #31485b;     font-style: italic; }     </style> </head> <body>     <div class="header">                 <ul class="nav">                     <li class="s1"><a href="#">Главная</a></li>                     <li><a href="#">Блог</a></li>                     <li><a href="#">Сервисы</a></li>                     <li><a href="#">Онлайн-профессии</a></li>                     <li><a href="#">О сайте</a></li>                 </ul>                                 <div class="sidebar">                     <form method="post" action="#" id="search_form" >                       <input type="search" name="search_field" placeholder="Поиск" />                     </form>                   </div>     </div> </body> </html>  
    • ЭЭ, а почему оно должно удалять? Может стоило повесить событие на эту кнопку и указать, что при это должно происходить?
    • например -R не будет качать указанные файлы если вы знаете список нужных вам файлов, проще их указать или можно написать парсер
    • выкладывайте код в песочнице, так будет проще У вас media подключается до blocks/header, по этому правила из blocks/header перекрывают media сверху вниз в css пишите tag .class ... @media и не будет у вас подобных проблем  
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy