Создаем калькулятор 👨‍💻 JavaScript. Без eval, по шагам для начинающих

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ก.พ. 2025

ความคิดเห็น • 208

  • @РустамАетбаев-р4к
    @РустамАетбаев-р4к 3 ปีที่แล้ว +9

    Для меня как для начинающего очень приятная, информативная и легко воспринимаемая подача материала! Почему раньше вас не замечал?!

  • @vasyl_trots
    @vasyl_trots 2 ปีที่แล้ว +1

    Неймовірно крута подача матеріалу. Дякую!

  • @kinggizzard9353
    @kinggizzard9353 3 ปีที่แล้ว +5

    Спасибо огромное Александру, очень приятно учиться по вашим видео

  • @СергейМоховцов
    @СергейМоховцов 10 หลายเดือนก่อน +1

    спасибо за видео. Делал с вами и все получилось. Нашел 1 баг. Если после каждого действия перед следующим вычислением не нажимать равно, то выводит ошибочные данные. Прим: 1) 2+2 = 4 -> 4+2 = 6 (так работает корректно, но обычно люди не нажимают на равно после каждого действия если нужно произвести несколько операций. И в этом случае если если мы нажмем 7+7-7 (например), то выведет -70. Но рекомендую всем новичкам постараться пофиксить это самим, пока я фиксил этот и другие баги получил дополнительных знаний. Еще раз спасибо за урок

  • @DlN0XXL
    @DlN0XXL 3 ปีที่แล้ว +2

    Никогда не писал на JavaScript, но очень было интересно

  • @Erlan-k1u
    @Erlan-k1u ปีที่แล้ว

    Ну ты гигант брат. Спасибо за урок

  • @Exigoll92
    @Exigoll92 3 ปีที่แล้ว +26

    Было круто! Ждем продолжение с фиксом багов! Поддержите камрады🙂 По более бы такого контента

    • @podsvinokSatani
      @podsvinokSatani 2 ปีที่แล้ว

      не, это уже интересная задача для саморазвития

    • @AlexandrSakura
      @AlexandrSakura ปีที่แล้ว +1

      пофиксил и доработал, чекайте мой коммент там ссылка на деплой)

  • @leaf5960
    @leaf5960 3 ปีที่แล้ว +10

    Лучше сделать лисенер на каждую кнопку. Все обработчики вынести в отдельные функции для реюза т.к. мы можем нажимать на ui и можем нажимать на нумпаде. Будет читаемый, расширяемый и понятный код. Так же легко будет покрыть тестами.

  • @МаксимМурашов-у4н
    @МаксимМурашов-у4н 4 หลายเดือนก่อน +2

    Красивый калькулятор, но логика вычисления напоминает изобретение велосипеда. Выражается это прежде всего в том, что для получения результата все время нужно нажимать знак "равно", что не обязательно в калькуляторах.
    Кто работал с программируемыми калькуляторами советских времен, помнят, что там даже нет кнопки "равно", а есть кнопка "стрелочка вверх" - перемещение числа в верхний регистр. Вводишь первое число, стрелочка; вводишь второе число, стрелочка, вводишь действие и итог перемещается опять в первый регистр.
    В обычных калькуляторах стрелочки нет, но числа аналогично перемещаются по регистрам: ввели первое число, нажали на команду - скопировали вверх (подобно стрелочке), ввели второе, нажали команду, вычислили и опять скопировали вверх и т.д. Знак равно в современных калькуляторах сделан только для пользователей, а у Вас в программе он самый главный - это не правильно.

  • @yuriilukianovych8660
    @yuriilukianovych8660 3 ปีที่แล้ว +7

    Ещё нужно обработать следующую ситуацию: пользователь ввёл a, b и знак, но вместо "=" нажимает другой знак. Здесь 2 варианта:
    1) сделать вычисление, как бы при нажатии на равно, результат будет в переменной a, записать этот новый знак и ждать ввода b
    2) выводить вверху сложное выражение, которое вычислить по нажатию "="
    Ещё нужно задать количество цифр после точки в выводе результата.

    • @AlexandrSakura
      @AlexandrSakura ปีที่แล้ว

      он запоминает результат, перезаписывает его в a, и дальше вычисления по кругу

    • @agraiskr
      @agraiskr ปีที่แล้ว

      @@AlexandrSakura и что получится если 4+5-2*6+4/3= ???

  • @АннаАндреевна-ь1и
    @АннаАндреевна-ь1и 2 ปีที่แล้ว +2

    Огромное спасибо за видео! Отличные подробные объяснения 🤩

  • @recentlygod6578
    @recentlygod6578 3 ปีที่แล้ว

    Лучший, спасибо, ждал продолжение с нетерпением и вот оно!

  • @ОльгаЛитвинова-ж8ш
    @ОльгаЛитвинова-ж8ш 2 ปีที่แล้ว +1

    Благодарю, Алекс! Интересное видео, подробные пояснения! 🙂👍

  • @Павел-ы2г7й
    @Павел-ы2г7й ปีที่แล้ว

    Просто крутяг. Спасибо за видео!

  • @chieftain6539
    @chieftain6539 ปีที่แล้ว

    Самое нормальное решенее,спасибо!

  • @iMan-ql4gx
    @iMan-ql4gx 3 ปีที่แล้ว +4

    Классное объяснение. Функции % и +/- было бы хорошо реализовать. Как то у меня пока не получилось.

  • @dmitriymedvedev70
    @dmitriymedvedev70 3 ปีที่แล้ว +1

    Алексей! Хочу поблагодарить вас за ваши видео по JS. Смотреть начал недавно, но пока все доступно и понятно.

  • @hikarukun5126
    @hikarukun5126 2 ปีที่แล้ว +4

    После длительной работы с React/ReactNative и их библиотеками сел для разнообразия сделать калькулятор и потратил на это 2 часа … чтобы полностью без ошибок работал, но результатом я остался недоволен, решил посмотреть видео 😁

    • @serdotsenko
      @serdotsenko ปีที่แล้ว

      после реакта такие видео смотреть вредно. т.к. в них акцент на работу с DOM API, что при разработке на Реакте считается плохой практикой - на прямую работать с DOM 🤓
      и вообще кто планирует изучать Реакт, то после базы по JS'у нужно сразу переходить на Реакт и не тратить время на DOM. это правда могут спросить на собеседовании, но вот как начнут спрашивать, тогда и выучите 😉

  • @ОлексійГраждан-в1э
    @ОлексійГраждан-в1э 2 ปีที่แล้ว +1

    Крутий гайд 👍

  • @ЕвгенийЕгунов-и3ч
    @ЕвгенийЕгунов-и3ч 2 ปีที่แล้ว

    Спасибо супер !Очень понравилось .Достаточно понятно

  • @James-oh1vy
    @James-oh1vy 2 ปีที่แล้ว +5

    На 9:30 у вас при нажатии пропадают цифры, а у меня ничего не происходит
    выдает такую ошибку Uncaught TypeError: Cannot set properties of null (setting 'onclick')

    • @pbarovsky
      @pbarovsky 2 ปีที่แล้ว

      точку поставить надо в скобках где объявляется класс.

  • @jscripts2697
    @jscripts2697 2 ปีที่แล้ว

    Отличный урок, много нового узнаешь

  • @oleksandrsmyrnov9275
    @oleksandrsmyrnov9275 3 ปีที่แล้ว +2

    спасибо за ваш труд!!!

  • @andrewgrechukh3139
    @andrewgrechukh3139 2 ปีที่แล้ว +2

    Щоб зробити кнопку +/-, то можна просто число помножити на -1 і знак поміняє значення. Проста матиматика :)

  • @mykhailo_shokun
    @mykhailo_shokun 3 ปีที่แล้ว +1

    очень просто и доходчиво, как всегда, спасибо вам Алекс

  • @forfedix1019
    @forfedix1019 3 ปีที่แล้ว +4

    Извиняюсь за правки учителю, сам я разбираюсь меньше в этом всё, но знаю точно, что пишется не "secont", а "second". Понимаю, что там вы указывали комментарий в JavaScript и он ни на что не влияет, но просто небольшая помарка)
    А так уроки очень познавательные, спасибо большое) Всё стало гораздо понятнее в работе с HTML, CSS и JavaScript )

  • @MrKOHKyPEHT
    @MrKOHKyPEHT 3 ปีที่แล้ว +33

    Казалось бы: простой калькулятор. Но когда сделал основу и начинаешь думать над доп фичами и их реализацией - растёт азарт.

    • @itgid
      @itgid  3 ปีที่แล้ว +1

      Я поэтому и люблю эту задачу. Она глубокая. Именно благодаря ей я в свое время познакомился с Обра́тная по́льская за́пись

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว

      @@itgid не легче готовую библиотеку скачать для калькулятора?

    • @yuriilukianovych8660
      @yuriilukianovych8660 3 ปีที่แล้ว +4

      @@Tui3694 дело не в том, чтобы найти готовое решение, а в том, чтобы практиковать приобретённые знания языка на реальной и интересной задаче

  • @user-ds6kg5uo7y
    @user-ds6kg5uo7y 5 หลายเดือนก่อน

    На 9:35 я нажимаю на цифры, но 0 не пропадает, когда вывожу командой на экран, всё равно горит 0 и не меняется ничего. В чём проблема?

  • @БАН-я2и
    @БАН-я2и 3 ปีที่แล้ว +4

    Около двух месяцев назад я писал свой собственный первый калькулятор на JS, и по началу думал что всё легко и без напряжения, но когда вник в суть и логику работы - понял что есть просто 1000 вещей которые можно добавить и исправить, но я остановился на простом и рабочем варианте.
    Когда я писал его, я использовал eval, но даже сегодня, когда я сделал калькулятор по примеру из видео у меня остался один не решённый баг...
    А заключается он в том, что пользователь определённо захочет потыкать на кнопочки, и нажать, к примеру "." несколько раз подряд. Так вот, я пытался сделать проверки предыдущего символа, чтобы если это вдруг ".", то запретить её повторный ввод. Но ведь после точки можно поставить снова число, А ВОТ ПОСЛЕ НЕГО УЖЕ СНОВА ТОЧКУ! А ведь чисел наподобии "3.14.1" не существует, и я пытался снова добавить проверки на наличие точки, и перебор всей строки, и кучу ещё всяких заморочек с этим. В итоге получается полнейший бред из NaN'ов инфинити и ошибок. В общем, если вы знаете пути решения этой проблемы, прошу отписаться в комментариях, а если это читает автор видео, то записать третью часть с решением проблем, и доработкой неработающей части нашего кальулятора)

    • @leaf5960
      @leaf5960 3 ปีที่แล้ว +1

      if (!/\./.test(your string with number)) // do something

    • @mykhailo_shokun
      @mykhailo_shokun 3 ปีที่แล้ว +3

      дополнить код автора и все будет работать адекватно без повторных повторений точек
      if (digit.includes(key)) {
      if (b === '' && sign === '') {
      if (key === '.' && a.includes('.')) {
      a += '';
      out.textContent = a;
      } else {
      a += key;
      out.textContent = a;
      }
      } else if (a !== '' && b !== '' && finish) {
      b = key;
      finish = false;
      out.textContent = b;
      } else {
      if (key === '.' && b.includes('.')) {
      b += '';
      out.textContent = b;
      } else {
      b += key;
      out.textContent = b;
      }
      }
      return;
      }

    • @AlexandrSakura
      @AlexandrSakura ปีที่แล้ว

      // удаление дубликатов точек
      duplicateDots: (arr) => {
      let doubleComma = arr.filter(item => item === '.').length;
      if (doubleComma > 0) {
      let commaIndex = arr.indexOf('.', 0);
      let firstComma = commaIndex;
      for (let i = 0; i

    • @mephisto2226
      @mephisto2226 10 หลายเดือนก่อน

      это делается легко в одну строку через условие if(num.includes(“.”)) return

    • @mephisto2226
      @mephisto2226 10 หลายเดือนก่อน

      @@mykhailo_shokunспагетти код

  • @DamedParadis
    @DamedParadis 3 ปีที่แล้ว

    ОГо! Спасибо, а вначале казалось все элементарно

  • @KseniaFr
    @KseniaFr 10 หลายเดือนก่อน

    Пытаюсь изучать JS. Спасибо за ролик

    • @thelowfer1016
      @thelowfer1016 4 หลายเดือนก่อน

      Что в итоге?

  • @AlexGoldWind
    @AlexGoldWind 3 ปีที่แล้ว

    Было интересно, спасибо и респект автору

  • @sa1ntseye648
    @sa1ntseye648 2 ปีที่แล้ว

    Спасибо за видео , очень интересно

  • @ВалерийНеФакт
    @ВалерийНеФакт 3 ปีที่แล้ว +29

    Будет проблема при повторном нажатии кнопки "." - точка внесется несколько раз, и, в отличии от незначащих нулей превратит калькулятор в тыкву.

    • @yuriilukianovych8660
      @yuriilukianovych8660 3 ปีที่แล้ว +3

      if (key === '.' && a.includes('.')) {
      a += '';
      console.log(a, b, sign);
      out.textContent = a;
      } else {
      a += key;
      console.log(a, b, sign);
      out.textContent = a;
      }
      Такую же проверку и для переменной b

    • @bayel5920
      @bayel5920 3 ปีที่แล้ว

      @@yuriilukianovych8660 а куда этот код вставлять,
      я просто недавно начал учиться

    • @yuriilukianovych8660
      @yuriilukianovych8660 3 ปีที่แล้ว

      @@bayel5920 это вместо кода, где записываем ввод в переменную a.
      Мы просто расширили код

    • @bayel5920
      @bayel5920 3 ปีที่แล้ว

      @@yuriilukianovych8660 спасибо

    • @НастяКудряшова-о8н
      @НастяКудряшова-о8н ปีที่แล้ว

      ​@@yuriilukianovych8660 А не подскажете почему с переменной b этот код не работает?

  • @Sashabutter228
    @Sashabutter228 3 ปีที่แล้ว

    Ты очень крутой!
    Спасибо большое 🤝

  • @rob3190
    @rob3190 ปีที่แล้ว

    спасибо тебе большое :)

  • @Anatoli-bq1pe
    @Anatoli-bq1pe ปีที่แล้ว

    Благодарю!

  • @АртурЗаинский
    @АртурЗаинский 2 ปีที่แล้ว +3

    Ещё неплохо было бы, если б Вы объяснили код , что делает например onclik. Я начинающий и при просмотре не понятно. Опишите пару слов берёт это делает это и это и всё будет просто замечательно

    • @mirzomok
      @mirzomok ปีที่แล้ว +2

      задался вопросом , гугли в ту же минуту

  • @UnravelWorld
    @UnravelWorld 10 หลายเดือนก่อน

    Мне интересно было бы посмотреть на ограничение цифр. Как оно делается. Я пробывал методы slice, substring.
    У меня была такая проблема что я ограничил этими методами, ну цифры остановились на ограничителе в 10 цифр и стали перезаписывать друг друга, так и не получилось исправить.

  • @Токсичная-ъ8о
    @Токсичная-ъ8о ปีที่แล้ว +1

    Не подскажете, как можно округлить числа с множеством цифр после запятой при делении? Например «0.5555555» можно же округлить до «0.5» ? При этом чтобы при выполнении других математических операций в ответе было целое число например «46», а не допустим «46.0»? А то никак не могу сообразить, как сделать округление, заранее спасибо

    • @melmenx
      @melmenx ปีที่แล้ว

      используйте toFixed();

  • @munarbeksarbashov5
    @munarbeksarbashov5 2 ปีที่แล้ว +2

    very nice

  • @igormaksymiv113
    @igormaksymiv113 2 ปีที่แล้ว

    Дякую за чудовий урок.
    Знайшов баг у цьому калькуляторі.
    При виконанні другої дії підряд в змінну b заноситься лише одне число.

  • @jssecrets
    @jssecrets 2 ปีที่แล้ว +3

    Спасибо! Классическая отечественная школа преподавания). А как сделать, чтобы точку нельзя нажимать более одного раза?

    • @wickedcode6338
      @wickedcode6338 2 ปีที่แล้ว +1

      if (a.includes('.') ) return; // если есть точка в числе, ничего не делать

    • @СергейЕршов-н3у
      @СергейЕршов-н3у ปีที่แล้ว

      if(key == '.' && a.includes('.')) {
      console.log(a, b, sign);
      out.textContent = a;
      return}; // если нажата кнопка '. ' и уже есть точка в числе, ничего не делать

    • @AlexandrSakura
      @AlexandrSakura ปีที่แล้ว

      // удаление дубликатов точек
      duplicateDots: (arr) => {
      let doubleComma = arr.filter(item => item === '.').length;
      if (doubleComma > 0) {
      let commaIndex = arr.indexOf('.', 0);
      let firstComma = commaIndex;
      for (let i = 0; i

  • @tobyalderweireld8445
    @tobyalderweireld8445 2 ปีที่แล้ว

    Интересно!

  • @VladTsyb
    @VladTsyb 3 ปีที่แล้ว

    Спасибо!

  • @hostvi
    @hostvi 3 ปีที่แล้ว +1

    1 номер = first number
    2 номер = second number
    3 номер = znak operatsui

  • @Learn-Dev_
    @Learn-Dev_ 3 ปีที่แล้ว

    Круто!!!

  • @youngprogrammer3858
    @youngprogrammer3858 3 ปีที่แล้ว +1

    Пожалуйста, укажите эффект вывода звука при нажатии цифр

  • @МихаилБадаев-э5ф
    @МихаилБадаев-э5ф 3 ปีที่แล้ว +2

    В общем у меня получилось подключить calc.js к index.html только через
    После чего получил ошибку
    Uncaught TypeError: Cannot set properties of null (setting 'onclick')
    в строке
    document.querySelector('.ac').onclick = clearAll;
    Не пойму чего творить дальше. Поможите плиз.
    Винда 10 21H2
    Хром Версия 96.0.4664.45

    • @harrisonwinston2850
      @harrisonwinston2850 3 ปีที่แล้ว +2

      у тебя в html файле нету блока с классом ac

    • @harrisonwinston2850
      @harrisonwinston2850 3 ปีที่แล้ว +2

      потому что в момент загрузки скрипта , html еще не загрузился, подключи правильно скрипт.

    • @МихаилБадаев-э5ф
      @МихаилБадаев-э5ф 3 ปีที่แล้ว +3

      @@harrisonwinston2850 Спасибо огромное!
      Блок с классом ac в html eсть.
      Подключил calc.js в конце index.html в body.
      Заработало!!!)

    • @Идемкофепить
      @Идемкофепить 2 ปีที่แล้ว

      @@МихаилБадаев-э5факуеть!

  • @ДимаРешетняк-у4р
    @ДимаРешетняк-у4р 2 ปีที่แล้ว

    У меня почему то не нажимаются кнопки умножения , деления и тд, все делаю через querySelectorAll, подскажите в чем может быть причина ?

  • @mr_timuchin674
    @mr_timuchin674 ปีที่แล้ว +1

    привет, решил ошибку с нулем перед числами:
    добавил массив digitSecond, где оставил только числа
    в условия добавил пункт
    if (a === '0' && digitSecond.includes(key)) {
    a = ' ';
    }

    • @mr_timuchin674
      @mr_timuchin674 ปีที่แล้ว

      забыл добавить, для b такое же условие следует написать :)

  • @arsa946
    @arsa946 3 ปีที่แล้ว +1

    Александр, спасибо!
    Расскажите про генерацию QR code. А также чтобы переход был на сервер. Тема не раскрыта в интернете.

    • @itgid
      @itgid  3 ปีที่แล้ว

      Так даже видео есть

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว +4

      хочешь qr сертификата от коронавируса сделать?

  • @azigurbanov4203
    @azigurbanov4203 2 ปีที่แล้ว +1

    Здравствуйте, у меня выводит ошибку null при объявлении onclick

  • @КаринаЧ-н5е
    @КаринаЧ-н5е ปีที่แล้ว +1

    Если взять 3 числа (и более), то калькулятор уже не работает правильно. А ведь пользователь может работать с разным количеством чисел. Как тогда быть? Благодарю за урок!

    • @dan9banan
      @dan9banan ปีที่แล้ว

      if (action.includes(btn)) {
      if (sign !== '') {
      // If yes, call the count() function
      count();
      sign = btn;
      result.textContent = sign
      console.log(sign);
      } else {
      // If not, set sign to btn and update the result.textContent
      sign = btn;
      result.textContent = sign;
      console.log(sign);
      }
      }

    • @НектоНектович-у5е
      @НектоНектович-у5е ปีที่แล้ว

      @@dan9banan объясни поподробнее, пожалуйста 🙏🙏🙏🙏

  • @ПавловОлексій
    @ПавловОлексій 3 ปีที่แล้ว

    Да, я делал более сложный, но похожий калькулятор на c# в 10 лет. Прям в детство вернулся. По памяти могу сказать, что нельзя сделать несколько действий за один шаг, типа = 5+5-7+8.
    Это можно решить, если а, б (числа) заменить на массив чисел и массив знаков, но это будет намного сложнее с приоритетом операторов или вложенные switch. eval конечно проще, но это крест на безопасности

    • @ВалерийНеФакт
      @ВалерийНеФакт 3 ปีที่แล้ว +1

      Есть система записи операций называется бесскобочная. То ли шведская то ли Датская. Использовали в советских ПМК в 80х годах (были такие БК-34, МК-61) пишется как 34 12 7 + * 15 - считается как (12+7)*34-15

    • @ПавловОлексій
      @ПавловОлексій 3 ปีที่แล้ว

      @@ВалерийНеФакт Надо разобраться, никогда о таком не слышал

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว

      @@ВалерийНеФакт ну и хрень

    • @trezzh4
      @trezzh4 2 ปีที่แล้ว

      @@ВалерийНеФакт обратная польская

    • @AlexandrSakura
      @AlexandrSakura ปีที่แล้ว

      в топку eval

  • @aquamanmyn
    @aquamanmyn 3 ปีที่แล้ว

    спасибо

  • @АлександрАлександров-ю6д
    @АлександрАлександров-ю6д 2 ปีที่แล้ว

    Почему вы в свиче прописали приведение к числу только в одном кейсе?

  • @Daleever
    @Daleever 3 ปีที่แล้ว

    У меня непонятная проблема: для класса buttons всегда flex стоит и это не меняется, то есть все кнопки в один ряд и они при гриде не меняют свое положение вообще. Хром последняя версия, код идентичный ( смотрел код в самом браузере и строка с display:grid была зачеркнута)

  • @anthonyjameson7129
    @anthonyjameson7129 3 ปีที่แล้ว

    Скажите, а почему нельзя было onclick повесить на . btn вместо . buttons. Тогда бы не пришлось проверять нажата ли кнопка. Попробовал так сделать, но не работает почему то

  • @mirkeimar
    @mirkeimar 3 ปีที่แล้ว

    Если после оператора нажать оператор? Проморгал этот момент в видео или не ставилось условие?

    • @ПавловОлексій
      @ПавловОлексій 3 ปีที่แล้ว

      Мы по нажатию на оператор его задаём:
      5 + - это 5 -

  • @СтепанБанзаев
    @СтепанБанзаев 2 ปีที่แล้ว

    А будет значительная разница в синтаксисе если этот калькулятор в писать в react native?

  • @armenbadalyan7049
    @armenbadalyan7049 2 ปีที่แล้ว

    Алекс а где можно найти весь этот код. у меня что то не работает?

  • @nk-lg7vk
    @nk-lg7vk 3 ปีที่แล้ว +3

    Да, хотелось бы видео по проблеме со сложением/умножением дробных чисел, типа 0.1 + 0.2 , чтобы результат был как в настоящем калькуляторе.

    • @glorglorsky7987
      @glorglorsky7987 3 ปีที่แล้ว +1

      (0,1 * 10 + 0,2 * 10) / 10 =0,3. Можно toFixed(2)

    • @lol9tor
      @lol9tor 3 ปีที่แล้ว

      можно использовать просто библиотеку типа BigInt

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว

      @@lol9tor как ты дробные числа в bigint засунешь?

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว

      @@glorglorsky7987 как ты решишь с 0.1*3?

    • @lol9tor
      @lol9tor 3 ปีที่แล้ว

      @@Tui3694вообще не вижу никакой проблемы

  • @ankub7835
    @ankub7835 2 ปีที่แล้ว

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

    • @РоманСтепановский-з9ц
      @РоманСтепановский-з9ц 2 ปีที่แล้ว

      у меня тоже не работает . нашел причину?

    • @ankub7835
      @ankub7835 2 ปีที่แล้ว

      @@РоманСтепановский-з9ц да, 1 не там подключил js (нужно в HTML ниже последнего , 2 проверь верно ли записан регистр:а именно там где в джава скрипте идёт блок с clearAll ниже две строки которые начинаются с if (! event.... У меня в этих строках list было написано с маленькой буквы

  • @penzienko
    @penzienko 3 ปีที่แล้ว +1

    Еще одна из стандартных функций базовых калькуляторов это если нажать 'число > умножить > равно' то число должно возвестись в квадрат '5 * =' 25

    • @itgid
      @itgid  3 ปีที่แล้ว +1

      Да. Так это и реализовано

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว

      не знал

  • @swishers2807
    @swishers2807 8 หลายเดือนก่อน

    Где код можно скачать?

  • @dmitry_kolom
    @dmitry_kolom 2 ปีที่แล้ว

    Я вот сделал этот калькулятор и у меня появился вопрос, почему нет никаких parseInt? как из строки получается число и почему нет бага джаваскрипта с вот этими 2+22 = 222

    • @Fullconcentrate
      @Fullconcentrate 2 ปีที่แล้ว

      перед перемнной + стоит, что автоматически конвертирует ее в число

  • @mrzmove1426
    @mrzmove1426 3 ปีที่แล้ว

    a*b/100=c это формула вычета процента из суммы

  • @yar0vayzz869
    @yar0vayzz869 2 ปีที่แล้ว

    можете скинуть файл калькулятора пожалуйста html css и js очень нужно

  • @андрейподлесный-ь8э
    @андрейподлесный-ь8э 2 ปีที่แล้ว +1

    А нужно папку какую то на рабочем столе создавать,что бы сонхронизировать между собой java и html,а то система ошибку в написании кода выдаёт,и в названии файла

    • @mr_timuchin674
      @mr_timuchin674 ปีที่แล้ว

      напиши в ссылке ./свой-адрес

  • @onEpuncHmeaN
    @onEpuncHmeaN 2 ปีที่แล้ว

    Всем привет, ребят выдает такую ошибку-" Uncaught ReferenceError: out is not defined
    at HTMLDivElement" Что делать? подскажите пожалуйста.

  • @maxoftrading
    @maxoftrading 3 ปีที่แล้ว +3

    У меня проблема calc.js:18 Uncaught TypeError: Cannot set properties of null (setting 'onclick')
    at calc.js:18 , все подключено, названия правильные

    • @pavelborodachev
      @pavelborodachev 3 ปีที่แล้ว +2

      Оберни весь код скрипта в document.addEventListener("DOMContentLoaded", function(event) { ЗДЕСЬ КОД СКРИПТА }

    • @ЭрикПетросянц
      @ЭрикПетросянц 2 ปีที่แล้ว

      @@pavelborodachev и в самом конце, после фигурной скобки, закрывающуюся круглую скобку

  • @elizavetaeremenko6558
    @elizavetaeremenko6558 ปีที่แล้ว

    Всем привет! У меня на строке const key = Event.target.textContent; выдает ошибку в браузере. Во-первых event с маленькой буквы зачеркивает, во-вторых в ошибке указано что нет возможности получить данные textContent...хотя файл к html подключен. Расстроилась, пошла искать другое видео. Первый раз пыталась сделать что то на JS)

  • @lililight-e5f
    @lililight-e5f 6 หลายเดือนก่อน

    кнопка ac неправильно работает, она очищает экран, но после калькулятор работает неправильно

  • @liqiliquooor3090
    @liqiliquooor3090 3 ปีที่แล้ว +1

    о даа, еще больше if)

  • @dlazder3937
    @dlazder3937 2 ปีที่แล้ว

    Вопросик, а 2+2+2 работать не будет? Как сделать это без eval?) (У меня с eval даже не получилось))))

  • @Bolvar_uz
    @Bolvar_uz 3 ปีที่แล้ว

    Здравствуйте у меня вопрос как строить логику в js и вообще в программировании я не могу понять что нужно делать?

    • @ЕвгенийКрыж
      @ЕвгенийКрыж 3 ปีที่แล้ว

      Для начала нужно изучить алгоритмизацию, тогда и логика должна появиться

  • @volodymyrkharin2332
    @volodymyrkharin2332 3 ปีที่แล้ว

    Как ограничить количество символов в .calc-screen?

  • @votemha
    @votemha 2 ปีที่แล้ว +1

    А отрицательные числа работают?

  • @ОльгаКоновалова-д4е
    @ОльгаКоновалова-д4е 3 ปีที่แล้ว

    Почему ошибка появляется с onclick (Uncaught TypeError: Cannot set properties of null (setting 'onclick')
    at calc.js:22)

    • @davejonns3825
      @davejonns3825 3 ปีที่แล้ว

      скорей всего у вас ошибка в название класа, в HTML и JS документах розняться названия, проверьте все название пару раз.

    • @andrewgrechukh3139
      @andrewgrechukh3139 2 ปีที่แล้ว

      в мене теж таке вийшло, то я забув в js написати крапку перед класом buttons :)

  • @МаксимМаксим-р2ф
    @МаксимМаксим-р2ф 3 ปีที่แล้ว

    Здравствуйте! У меня ошибка calc.js:22 Uncaught ReferenceError: clearall is not defined
    at calc.js:22
    Что не так я сделал?

    • @tgfilmoweek
      @tgfilmoweek 2 ปีที่แล้ว +1

      Объявил функцию clearAll без скобочек, должно быть clearAll()

  • @golkhoplan6889
    @golkhoplan6889 3 ปีที่แล้ว +2

    есть пару ошибок.
    1. если много напечатать цифры выходят за рамки
    2. тот же баг когда цифры ответа не помешаются
    3. позволяет несколько раз подряд поставить точку

  • @jerdo7917
    @jerdo7917 3 ปีที่แล้ว +4

    0.1 + 0.2 будет прикол, скорее всего)

    • @ruslwhite
      @ruslwhite 3 ปีที่แล้ว +1

      Да решается просто же, *10/10

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว

      @@ruslwhite это хрень же (0,1 * 10 + 0,2 * 10) / 10 =0,3
      как ты решишь с 0.1*3?

    • @volodymyrkharin2332
      @volodymyrkharin2332 3 ปีที่แล้ว

      вы правы, как так? Что это ха баг?

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว

      @@volodymyrkharin2332 особенность float IEEE 754. Сделай округление

  • @destonshow4840
    @destonshow4840 3 ปีที่แล้ว

    а как скачать калькулятор, прост у меня не получилось написать

  • @lianguema6963
    @lianguema6963 2 ปีที่แล้ว

    Я вот подзависла на onclick, чем заменить и как ?

    • @Andrii1728
      @Andrii1728 2 ปีที่แล้ว +1

      если проблема в том что не работает код и консоль ссылается на ошибку onclick, попробуйте добавить в подключение джаваскрипта defer. Будет:

    • @katana1080
      @katana1080 6 หลายเดือนก่อน

      @@Andrii1728 твой комментарий помог спустя год, спасибо броу

  • @vladislavbokhan1265
    @vladislavbokhan1265 3 ปีที่แล้ว

    у меня CSS код не работает(. Просто все символы в столбик выстроились

  • @gmmips
    @gmmips 3 ปีที่แล้ว +2

    А если в результате штук 10 цифр? Они же вылезут за пределы калькулятора. Уменьшение цифр нужно сделать.

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว +1

      так?
      var observer = new MutationObserver(
      function(mutations) {
      if (a.toString().length > 8) {
      out.style.fontSize = 500 / a.toString().length + 'px';
      } else {
      out.style.fontSize = '4rem';
      }
      }
      );
      observer.observe(out, { childList: true });

    • @gmmips
      @gmmips 3 ปีที่แล้ว

      Ох... мутации... При непонимании как они работают можно загеморроиться на весь день в поиске ощибки 😁
      А по коду, наверное всё же нужно следить за characterData.

    • @Tui3694
      @Tui3694 3 ปีที่แล้ว

      @@gmmips так не работает
      observer.observe(out, { characterData: true });

    • @mykhailo_shokun
      @mykhailo_shokun 3 ปีที่แล้ว

      @@Tui3694Спасибо тебе.
      Скопировал твой код и подправил для случаев, когда после короткого значения "а" идет длинное значение "b", и когда после длинного "а" идет длинное "b"
      const observer = new MutationObserver(
      function(mutations) {
      if (a.toString().length > 10) {
      out.style.fontSize = 400 / a.toString().length + 'px';
      if (b.toString().length > 12) {
      out.style.fontSize = 400 / b.toString().length + 'px';
      }
      } else if (b.toString().length > 10) {
      out.style.fontSize = 400 / b.toString().length + 'px';
      } else {
      out.style.fontSize = '44px';
      }
      }
      );
      observer.observe(out, { childList: true });

    • @mephisto2226
      @mephisto2226 10 หลายเดือนก่อน

      function getReducedSizeOfNumber(){
      let currentWidthOfNumber = Number.parseInt(getComputedStyle(output).width);
      let currentFontSizeOfNubmer = Number.parseInt(getComputedStyle(output).fontSize);
      while(currentWidthOfNumber > 270){
      currentWidthOfNumber = Number.parseInt(getComputedStyle(output).width);
      output.style.fontSize = `${currentFontSizeOfNubmer--}px`;
      };
      };
      вот функция на уменьшение числа в outpute, только вместо outputa примите свой css класс

  • @jahongir11ganijanov12
    @jahongir11ganijanov12 2 ปีที่แล้ว

    У меня не появился этот калькулятор чё делать? 😫

  • @elfikhovhannisyan9098
    @elfikhovhannisyan9098 2 ปีที่แล้ว

    Как название zip файла в телеге?

  • @olezhonnv3215
    @olezhonnv3215 3 ปีที่แล้ว

    Калькулятор слабенький. Нужно добавить память и сложные выражения со скобками.
    Выражение должно набираться на экране калькулятора, а уже результат потом по кнопке равно показывается.
    Просто заинтриговал, что без евал, а тут и не нужен евал в принципе.

  • @СергейЛитвинов-ц1о
    @СергейЛитвинов-ц1о 3 ปีที่แล้ว

    А на php как это реализовать?

  • @etozhezor
    @etozhezor 10 หลายเดือนก่อน

    Мда, у меня код получился на 180 строк…
    Мой затуп в том что я первое и второе число представлял в виде массивов 🥴 а потом в результате джойнил их) но зато прописал логику недопустимости двух запятых в одном числе, а тут её нет, как я понял

  • @jamesborn89
    @jamesborn89 3 ปีที่แล้ว

    красава! но нолик так и не поправил в верстке=)

  • @williamccommando7101
    @williamccommando7101 2 ปีที่แล้ว

    После нажатия на = не принимает иных значений
    мелочь, а обидно

  • @user-ivan-pop
    @user-ivan-pop 3 ปีที่แล้ว +1

    Здравствуйте!
    Думаю проверка деления на 0 не совсем правильная, так так не ловит деление на 00, 000 и т.д.

    • @itgid
      @itgid  3 ปีที่แล้ว

      Согласен

    • @ЕвгенийКрыж
      @ЕвгенийКрыж 3 ปีที่แล้ว +3

      Можно делать проверку на infinity, тогда все гуд будет

    • @adeusexmachina
      @adeusexmachina 3 ปีที่แล้ว

      @@itgid в данном случае можно вместо === 0 сделать == 0 и тогда текст '000' будет интерпретирован как 0 но лучше сразу ловить инфинити и нан

    • @AlexandrSakura
      @AlexandrSakura ปีที่แล้ว

      просто напишите функцию которая убирает дубли нулей и всё

  • @serdotsenko
    @serdotsenko ปีที่แล้ว

    через eval получается решение короче и сохраняется приоритет операторов при вычислении 🤓

  • @Ramaario
    @Ramaario 3 ปีที่แล้ว

    привет. есть калькулятор на java?

    • @ВалерийНеФакт
      @ВалерийНеФакт 3 ปีที่แล้ว

      Напиши. Чё там сложно? Можно прям из этого перевести.

    • @Ramaario
      @Ramaario 3 ปีที่แล้ว

      @@ВалерийНеФакт так я и спрашиваю есть видео у автора по написанию на java. знал бы я как - написал не спрашивал

    • @Shved_2.0
      @Shved_2.0 3 ปีที่แล้ว

      @@Ramaario автор пишет на js и php, то есть на java нет

  • @amongushappy3789
    @amongushappy3789 2 ปีที่แล้ว

    Как это понимать.....

  • @Alexsey095
    @Alexsey095 ปีที่แล้ว +1

    Автор даже не объяснил, как добавить js в html. После добавления файла js в html, код все равно не работает. Не подскажите почему?

    • @KalyaginVasiliy
      @KalyaginVasiliy 11 หลายเดือนก่อน +1

      Я с такой же проблемой столкнулся. Посмотри, правильно ли написана у тебя функция "onclick". Мог по ошибке написать "oneclick"

  • @velikorossnationalist4259
    @velikorossnationalist4259 2 ปีที่แล้ว +2

    Есть косяк еще такой:
    1. Нажимаем любое число (например 2).
    2. Обнуляем по средством кнопки ас
    3.Вводим другое число (например 2) и выходит 22...

    • @mst9301
      @mst9301 2 ปีที่แล้ว +1

      ты скорее всего переменные в функции обьявил локально
      новые let