спасибо за видео. Делал с вами и все получилось. Нашел 1 баг. Если после каждого действия перед следующим вычислением не нажимать равно, то выводит ошибочные данные. Прим: 1) 2+2 = 4 -> 4+2 = 6 (так работает корректно, но обычно люди не нажимают на равно после каждого действия если нужно произвести несколько операций. И в этом случае если если мы нажмем 7+7-7 (например), то выведет -70. Но рекомендую всем новичкам постараться пофиксить это самим, пока я фиксил этот и другие баги получил дополнительных знаний. Еще раз спасибо за урок
Лучше сделать лисенер на каждую кнопку. Все обработчики вынести в отдельные функции для реюза т.к. мы можем нажимать на ui и можем нажимать на нумпаде. Будет читаемый, расширяемый и понятный код. Так же легко будет покрыть тестами.
Красивый калькулятор, но логика вычисления напоминает изобретение велосипеда. Выражается это прежде всего в том, что для получения результата все время нужно нажимать знак "равно", что не обязательно в калькуляторах. Кто работал с программируемыми калькуляторами советских времен, помнят, что там даже нет кнопки "равно", а есть кнопка "стрелочка вверх" - перемещение числа в верхний регистр. Вводишь первое число, стрелочка; вводишь второе число, стрелочка, вводишь действие и итог перемещается опять в первый регистр. В обычных калькуляторах стрелочки нет, но числа аналогично перемещаются по регистрам: ввели первое число, нажали на команду - скопировали вверх (подобно стрелочке), ввели второе, нажали команду, вычислили и опять скопировали вверх и т.д. Знак равно в современных калькуляторах сделан только для пользователей, а у Вас в программе он самый главный - это не правильно.
Ещё нужно обработать следующую ситуацию: пользователь ввёл a, b и знак, но вместо "=" нажимает другой знак. Здесь 2 варианта: 1) сделать вычисление, как бы при нажатии на равно, результат будет в переменной a, записать этот новый знак и ждать ввода b 2) выводить вверху сложное выражение, которое вычислить по нажатию "=" Ещё нужно задать количество цифр после точки в выводе результата.
После длительной работы с React/ReactNative и их библиотеками сел для разнообразия сделать калькулятор и потратил на это 2 часа … чтобы полностью без ошибок работал, но результатом я остался недоволен, решил посмотреть видео 😁
после реакта такие видео смотреть вредно. т.к. в них акцент на работу с DOM API, что при разработке на Реакте считается плохой практикой - на прямую работать с DOM 🤓 и вообще кто планирует изучать Реакт, то после базы по JS'у нужно сразу переходить на Реакт и не тратить время на DOM. это правда могут спросить на собеседовании, но вот как начнут спрашивать, тогда и выучите 😉
На 9:30 у вас при нажатии пропадают цифры, а у меня ничего не происходит выдает такую ошибку Uncaught TypeError: Cannot set properties of null (setting 'onclick')
Извиняюсь за правки учителю, сам я разбираюсь меньше в этом всё, но знаю точно, что пишется не "secont", а "second". Понимаю, что там вы указывали комментарий в JavaScript и он ни на что не влияет, но просто небольшая помарка) А так уроки очень познавательные, спасибо большое) Всё стало гораздо понятнее в работе с HTML, CSS и JavaScript )
Около двух месяцев назад я писал свой собственный первый калькулятор на JS, и по началу думал что всё легко и без напряжения, но когда вник в суть и логику работы - понял что есть просто 1000 вещей которые можно добавить и исправить, но я остановился на простом и рабочем варианте. Когда я писал его, я использовал eval, но даже сегодня, когда я сделал калькулятор по примеру из видео у меня остался один не решённый баг... А заключается он в том, что пользователь определённо захочет потыкать на кнопочки, и нажать, к примеру "." несколько раз подряд. Так вот, я пытался сделать проверки предыдущего символа, чтобы если это вдруг ".", то запретить её повторный ввод. Но ведь после точки можно поставить снова число, А ВОТ ПОСЛЕ НЕГО УЖЕ СНОВА ТОЧКУ! А ведь чисел наподобии "3.14.1" не существует, и я пытался снова добавить проверки на наличие точки, и перебор всей строки, и кучу ещё всяких заморочек с этим. В итоге получается полнейший бред из NaN'ов инфинити и ошибок. В общем, если вы знаете пути решения этой проблемы, прошу отписаться в комментариях, а если это читает автор видео, то записать третью часть с решением проблем, и доработкой неработающей части нашего кальулятора)
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
Ещё неплохо было бы, если б Вы объяснили код , что делает например onclik. Я начинающий и при просмотре не понятно. Опишите пару слов берёт это делает это и это и всё будет просто замечательно
Мне интересно было бы посмотреть на ограничение цифр. Как оно делается. Я пробывал методы slice, substring. У меня была такая проблема что я ограничил этими методами, ну цифры остановились на ограничителе в 10 цифр и стали перезаписывать друг друга, так и не получилось исправить.
Не подскажете, как можно округлить числа с множеством цифр после запятой при делении? Например «0.5555555» можно же округлить до «0.5» ? При этом чтобы при выполнении других математических операций в ответе было целое число например «46», а не допустим «46.0»? А то никак не могу сообразить, как сделать округление, заранее спасибо
if(key == '.' && a.includes('.')) { console.log(a, b, sign); out.textContent = a; return}; // если нажата кнопка '. ' и уже есть точка в числе, ничего не делать
В общем у меня получилось подключить calc.js к index.html только через После чего получил ошибку Uncaught TypeError: Cannot set properties of null (setting 'onclick') в строке document.querySelector('.ac').onclick = clearAll; Не пойму чего творить дальше. Поможите плиз. Винда 10 21H2 Хром Версия 96.0.4664.45
привет, решил ошибку с нулем перед числами: добавил массив digitSecond, где оставил только числа в условия добавил пункт if (a === '0' && digitSecond.includes(key)) { a = ' '; }
Если взять 3 числа (и более), то калькулятор уже не работает правильно. А ведь пользователь может работать с разным количеством чисел. Как тогда быть? Благодарю за урок!
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); } }
Да, я делал более сложный, но похожий калькулятор на c# в 10 лет. Прям в детство вернулся. По памяти могу сказать, что нельзя сделать несколько действий за один шаг, типа = 5+5-7+8. Это можно решить, если а, б (числа) заменить на массив чисел и массив знаков, но это будет намного сложнее с приоритетом операторов или вложенные switch. eval конечно проще, но это крест на безопасности
Есть система записи операций называется бесскобочная. То ли шведская то ли Датская. Использовали в советских ПМК в 80х годах (были такие БК-34, МК-61) пишется как 34 12 7 + * 15 - считается как (12+7)*34-15
У меня непонятная проблема: для класса buttons всегда flex стоит и это не меняется, то есть все кнопки в один ряд и они при гриде не меняют свое положение вообще. Хром последняя версия, код идентичный ( смотрел код в самом браузере и строка с display:grid была зачеркнута)
Скажите, а почему нельзя было onclick повесить на . btn вместо . buttons. Тогда бы не пришлось проверять нажата ли кнопка. Попробовал так сделать, но не работает почему то
@@РоманСтепановский-з9ц да, 1 не там подключил js (нужно в HTML ниже последнего , 2 проверь верно ли записан регистр:а именно там где в джава скрипте идёт блок с clearAll ниже две строки которые начинаются с if (! event.... У меня в этих строках list было написано с маленькой буквы
Я вот сделал этот калькулятор и у меня появился вопрос, почему нет никаких parseInt? как из строки получается число и почему нет бага джаваскрипта с вот этими 2+22 = 222
А нужно папку какую то на рабочем столе создавать,что бы сонхронизировать между собой java и html,а то система ошибку в написании кода выдаёт,и в названии файла
Всем привет! У меня на строке const key = Event.target.textContent; выдает ошибку в браузере. Во-первых event с маленькой буквы зачеркивает, во-вторых в ошибке указано что нет возможности получить данные textContent...хотя файл к html подключен. Расстроилась, пошла искать другое видео. Первый раз пыталась сделать что то на JS)
есть пару ошибок. 1. если много напечатать цифры выходят за рамки 2. тот же баг когда цифры ответа не помешаются 3. позволяет несколько раз подряд поставить точку
Ох... мутации... При непонимании как они работают можно загеморроиться на весь день в поиске ощибки 😁 А по коду, наверное всё же нужно следить за characterData.
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 класс
Калькулятор слабенький. Нужно добавить память и сложные выражения со скобками. Выражение должно набираться на экране калькулятора, а уже результат потом по кнопке равно показывается. Просто заинтриговал, что без евал, а тут и не нужен евал в принципе.
Мда, у меня код получился на 180 строк… Мой затуп в том что я первое и второе число представлял в виде массивов 🥴 а потом в результате джойнил их) но зато прописал логику недопустимости двух запятых в одном числе, а тут её нет, как я понял
Для меня как для начинающего очень приятная, информативная и легко воспринимаемая подача материала! Почему раньше вас не замечал?!
Неймовірно крута подача матеріалу. Дякую!
Спасибо огромное Александру, очень приятно учиться по вашим видео
спасибо за видео. Делал с вами и все получилось. Нашел 1 баг. Если после каждого действия перед следующим вычислением не нажимать равно, то выводит ошибочные данные. Прим: 1) 2+2 = 4 -> 4+2 = 6 (так работает корректно, но обычно люди не нажимают на равно после каждого действия если нужно произвести несколько операций. И в этом случае если если мы нажмем 7+7-7 (например), то выведет -70. Но рекомендую всем новичкам постараться пофиксить это самим, пока я фиксил этот и другие баги получил дополнительных знаний. Еще раз спасибо за урок
Никогда не писал на JavaScript, но очень было интересно
Ну ты гигант брат. Спасибо за урок
Было круто! Ждем продолжение с фиксом багов! Поддержите камрады🙂 По более бы такого контента
не, это уже интересная задача для саморазвития
пофиксил и доработал, чекайте мой коммент там ссылка на деплой)
Лучше сделать лисенер на каждую кнопку. Все обработчики вынести в отдельные функции для реюза т.к. мы можем нажимать на ui и можем нажимать на нумпаде. Будет читаемый, расширяемый и понятный код. Так же легко будет покрыть тестами.
Красивый калькулятор, но логика вычисления напоминает изобретение велосипеда. Выражается это прежде всего в том, что для получения результата все время нужно нажимать знак "равно", что не обязательно в калькуляторах.
Кто работал с программируемыми калькуляторами советских времен, помнят, что там даже нет кнопки "равно", а есть кнопка "стрелочка вверх" - перемещение числа в верхний регистр. Вводишь первое число, стрелочка; вводишь второе число, стрелочка, вводишь действие и итог перемещается опять в первый регистр.
В обычных калькуляторах стрелочки нет, но числа аналогично перемещаются по регистрам: ввели первое число, нажали на команду - скопировали вверх (подобно стрелочке), ввели второе, нажали команду, вычислили и опять скопировали вверх и т.д. Знак равно в современных калькуляторах сделан только для пользователей, а у Вас в программе он самый главный - это не правильно.
Ещё нужно обработать следующую ситуацию: пользователь ввёл a, b и знак, но вместо "=" нажимает другой знак. Здесь 2 варианта:
1) сделать вычисление, как бы при нажатии на равно, результат будет в переменной a, записать этот новый знак и ждать ввода b
2) выводить вверху сложное выражение, которое вычислить по нажатию "="
Ещё нужно задать количество цифр после точки в выводе результата.
он запоминает результат, перезаписывает его в a, и дальше вычисления по кругу
@@AlexandrSakura и что получится если 4+5-2*6+4/3= ???
Огромное спасибо за видео! Отличные подробные объяснения 🤩
Лучший, спасибо, ждал продолжение с нетерпением и вот оно!
Благодарю, Алекс! Интересное видео, подробные пояснения! 🙂👍
Просто крутяг. Спасибо за видео!
Самое нормальное решенее,спасибо!
Классное объяснение. Функции % и +/- было бы хорошо реализовать. Как то у меня пока не получилось.
Алексей! Хочу поблагодарить вас за ваши видео по JS. Смотреть начал недавно, но пока все доступно и понятно.
После длительной работы с React/ReactNative и их библиотеками сел для разнообразия сделать калькулятор и потратил на это 2 часа … чтобы полностью без ошибок работал, но результатом я остался недоволен, решил посмотреть видео 😁
после реакта такие видео смотреть вредно. т.к. в них акцент на работу с DOM API, что при разработке на Реакте считается плохой практикой - на прямую работать с DOM 🤓
и вообще кто планирует изучать Реакт, то после базы по JS'у нужно сразу переходить на Реакт и не тратить время на DOM. это правда могут спросить на собеседовании, но вот как начнут спрашивать, тогда и выучите 😉
Крутий гайд 👍
Спасибо супер !Очень понравилось .Достаточно понятно
На 9:30 у вас при нажатии пропадают цифры, а у меня ничего не происходит
выдает такую ошибку Uncaught TypeError: Cannot set properties of null (setting 'onclick')
точку поставить надо в скобках где объявляется класс.
Отличный урок, много нового узнаешь
спасибо за ваш труд!!!
Щоб зробити кнопку +/-, то можна просто число помножити на -1 і знак поміняє значення. Проста матиматика :)
очень просто и доходчиво, как всегда, спасибо вам Алекс
Извиняюсь за правки учителю, сам я разбираюсь меньше в этом всё, но знаю точно, что пишется не "secont", а "second". Понимаю, что там вы указывали комментарий в JavaScript и он ни на что не влияет, но просто небольшая помарка)
А так уроки очень познавательные, спасибо большое) Всё стало гораздо понятнее в работе с HTML, CSS и JavaScript )
Казалось бы: простой калькулятор. Но когда сделал основу и начинаешь думать над доп фичами и их реализацией - растёт азарт.
Я поэтому и люблю эту задачу. Она глубокая. Именно благодаря ей я в свое время познакомился с Обра́тная по́льская за́пись
@@itgid не легче готовую библиотеку скачать для калькулятора?
@@Tui3694 дело не в том, чтобы найти готовое решение, а в том, чтобы практиковать приобретённые знания языка на реальной и интересной задаче
На 9:35 я нажимаю на цифры, но 0 не пропадает, когда вывожу командой на экран, всё равно горит 0 и не меняется ничего. В чём проблема?
Около двух месяцев назад я писал свой собственный первый калькулятор на JS, и по началу думал что всё легко и без напряжения, но когда вник в суть и логику работы - понял что есть просто 1000 вещей которые можно добавить и исправить, но я остановился на простом и рабочем варианте.
Когда я писал его, я использовал eval, но даже сегодня, когда я сделал калькулятор по примеру из видео у меня остался один не решённый баг...
А заключается он в том, что пользователь определённо захочет потыкать на кнопочки, и нажать, к примеру "." несколько раз подряд. Так вот, я пытался сделать проверки предыдущего символа, чтобы если это вдруг ".", то запретить её повторный ввод. Но ведь после точки можно поставить снова число, А ВОТ ПОСЛЕ НЕГО УЖЕ СНОВА ТОЧКУ! А ведь чисел наподобии "3.14.1" не существует, и я пытался снова добавить проверки на наличие точки, и перебор всей строки, и кучу ещё всяких заморочек с этим. В итоге получается полнейший бред из NaN'ов инфинити и ошибок. В общем, если вы знаете пути решения этой проблемы, прошу отписаться в комментариях, а если это читает автор видео, то записать третью часть с решением проблем, и доработкой неработающей части нашего кальулятора)
if (!/\./.test(your string with number)) // do something
дополнить код автора и все будет работать адекватно без повторных повторений точек
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;
}
// удаление дубликатов точек
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
это делается легко в одну строку через условие if(num.includes(“.”)) return
@@mykhailo_shokunспагетти код
ОГо! Спасибо, а вначале казалось все элементарно
Пытаюсь изучать JS. Спасибо за ролик
Что в итоге?
Было интересно, спасибо и респект автору
Спасибо за видео , очень интересно
Будет проблема при повторном нажатии кнопки "." - точка внесется несколько раз, и, в отличии от незначащих нулей превратит калькулятор в тыкву.
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
@@yuriilukianovych8660 а куда этот код вставлять,
я просто недавно начал учиться
@@bayel5920 это вместо кода, где записываем ввод в переменную a.
Мы просто расширили код
@@yuriilukianovych8660 спасибо
@@yuriilukianovych8660 А не подскажете почему с переменной b этот код не работает?
Ты очень крутой!
Спасибо большое 🤝
спасибо тебе большое :)
Благодарю!
Ещё неплохо было бы, если б Вы объяснили код , что делает например onclik. Я начинающий и при просмотре не понятно. Опишите пару слов берёт это делает это и это и всё будет просто замечательно
задался вопросом , гугли в ту же минуту
Мне интересно было бы посмотреть на ограничение цифр. Как оно делается. Я пробывал методы slice, substring.
У меня была такая проблема что я ограничил этими методами, ну цифры остановились на ограничителе в 10 цифр и стали перезаписывать друг друга, так и не получилось исправить.
Не подскажете, как можно округлить числа с множеством цифр после запятой при делении? Например «0.5555555» можно же округлить до «0.5» ? При этом чтобы при выполнении других математических операций в ответе было целое число например «46», а не допустим «46.0»? А то никак не могу сообразить, как сделать округление, заранее спасибо
используйте toFixed();
very nice
Дякую за чудовий урок.
Знайшов баг у цьому калькуляторі.
При виконанні другої дії підряд в змінну b заноситься лише одне число.
Спасибо! Классическая отечественная школа преподавания). А как сделать, чтобы точку нельзя нажимать более одного раза?
if (a.includes('.') ) return; // если есть точка в числе, ничего не делать
if(key == '.' && a.includes('.')) {
console.log(a, b, sign);
out.textContent = a;
return}; // если нажата кнопка '. ' и уже есть точка в числе, ничего не делать
// удаление дубликатов точек
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
Интересно!
Спасибо!
1 номер = first number
2 номер = second number
3 номер = znak operatsui
Круто!!!
Пожалуйста, укажите эффект вывода звука при нажатии цифр
В общем у меня получилось подключить calc.js к index.html только через
После чего получил ошибку
Uncaught TypeError: Cannot set properties of null (setting 'onclick')
в строке
document.querySelector('.ac').onclick = clearAll;
Не пойму чего творить дальше. Поможите плиз.
Винда 10 21H2
Хром Версия 96.0.4664.45
у тебя в html файле нету блока с классом ac
потому что в момент загрузки скрипта , html еще не загрузился, подключи правильно скрипт.
@@harrisonwinston2850 Спасибо огромное!
Блок с классом ac в html eсть.
Подключил calc.js в конце index.html в body.
Заработало!!!)
@@МихаилБадаев-э5факуеть!
У меня почему то не нажимаются кнопки умножения , деления и тд, все делаю через querySelectorAll, подскажите в чем может быть причина ?
привет, решил ошибку с нулем перед числами:
добавил массив digitSecond, где оставил только числа
в условия добавил пункт
if (a === '0' && digitSecond.includes(key)) {
a = ' ';
}
забыл добавить, для b такое же условие следует написать :)
Александр, спасибо!
Расскажите про генерацию QR code. А также чтобы переход был на сервер. Тема не раскрыта в интернете.
Так даже видео есть
хочешь qr сертификата от коронавируса сделать?
Здравствуйте, у меня выводит ошибку null при объявлении onclick
Если взять 3 числа (и более), то калькулятор уже не работает правильно. А ведь пользователь может работать с разным количеством чисел. Как тогда быть? Благодарю за урок!
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);
}
}
@@dan9banan объясни поподробнее, пожалуйста 🙏🙏🙏🙏
Да, я делал более сложный, но похожий калькулятор на c# в 10 лет. Прям в детство вернулся. По памяти могу сказать, что нельзя сделать несколько действий за один шаг, типа = 5+5-7+8.
Это можно решить, если а, б (числа) заменить на массив чисел и массив знаков, но это будет намного сложнее с приоритетом операторов или вложенные switch. eval конечно проще, но это крест на безопасности
Есть система записи операций называется бесскобочная. То ли шведская то ли Датская. Использовали в советских ПМК в 80х годах (были такие БК-34, МК-61) пишется как 34 12 7 + * 15 - считается как (12+7)*34-15
@@ВалерийНеФакт Надо разобраться, никогда о таком не слышал
@@ВалерийНеФакт ну и хрень
@@ВалерийНеФакт обратная польская
в топку eval
спасибо
Почему вы в свиче прописали приведение к числу только в одном кейсе?
У меня непонятная проблема: для класса buttons всегда flex стоит и это не меняется, то есть все кнопки в один ряд и они при гриде не меняют свое положение вообще. Хром последняя версия, код идентичный ( смотрел код в самом браузере и строка с display:grid была зачеркнута)
Скажите, а почему нельзя было onclick повесить на . btn вместо . buttons. Тогда бы не пришлось проверять нажата ли кнопка. Попробовал так сделать, но не работает почему то
Если после оператора нажать оператор? Проморгал этот момент в видео или не ставилось условие?
Мы по нажатию на оператор его задаём:
5 + - это 5 -
А будет значительная разница в синтаксисе если этот калькулятор в писать в react native?
Алекс а где можно найти весь этот код. у меня что то не работает?
Да, хотелось бы видео по проблеме со сложением/умножением дробных чисел, типа 0.1 + 0.2 , чтобы результат был как в настоящем калькуляторе.
(0,1 * 10 + 0,2 * 10) / 10 =0,3. Можно toFixed(2)
можно использовать просто библиотеку типа BigInt
@@lol9tor как ты дробные числа в bigint засунешь?
@@glorglorsky7987 как ты решишь с 0.1*3?
@@Tui3694вообще не вижу никакой проблемы
Добрый день, спасибо вам большое. Не могу понять у меня onclick почему то не работает в уже все перешерстил не могу понять.
у меня тоже не работает . нашел причину?
@@РоманСтепановский-з9ц да, 1 не там подключил js (нужно в HTML ниже последнего , 2 проверь верно ли записан регистр:а именно там где в джава скрипте идёт блок с clearAll ниже две строки которые начинаются с if (! event.... У меня в этих строках list было написано с маленькой буквы
Еще одна из стандартных функций базовых калькуляторов это если нажать 'число > умножить > равно' то число должно возвестись в квадрат '5 * =' 25
Да. Так это и реализовано
не знал
Где код можно скачать?
Я вот сделал этот калькулятор и у меня появился вопрос, почему нет никаких parseInt? как из строки получается число и почему нет бага джаваскрипта с вот этими 2+22 = 222
перед перемнной + стоит, что автоматически конвертирует ее в число
a*b/100=c это формула вычета процента из суммы
можете скинуть файл калькулятора пожалуйста html css и js очень нужно
А нужно папку какую то на рабочем столе создавать,что бы сонхронизировать между собой java и html,а то система ошибку в написании кода выдаёт,и в названии файла
напиши в ссылке ./свой-адрес
Всем привет, ребят выдает такую ошибку-" Uncaught ReferenceError: out is not defined
at HTMLDivElement" Что делать? подскажите пожалуйста.
У меня проблема calc.js:18 Uncaught TypeError: Cannot set properties of null (setting 'onclick')
at calc.js:18 , все подключено, названия правильные
Оберни весь код скрипта в document.addEventListener("DOMContentLoaded", function(event) { ЗДЕСЬ КОД СКРИПТА }
@@pavelborodachev и в самом конце, после фигурной скобки, закрывающуюся круглую скобку
Всем привет! У меня на строке const key = Event.target.textContent; выдает ошибку в браузере. Во-первых event с маленькой буквы зачеркивает, во-вторых в ошибке указано что нет возможности получить данные textContent...хотя файл к html подключен. Расстроилась, пошла искать другое видео. Первый раз пыталась сделать что то на JS)
кнопка ac неправильно работает, она очищает экран, но после калькулятор работает неправильно
о даа, еще больше if)
Вопросик, а 2+2+2 работать не будет? Как сделать это без eval?) (У меня с eval даже не получилось))))
Здравствуйте у меня вопрос как строить логику в js и вообще в программировании я не могу понять что нужно делать?
Для начала нужно изучить алгоритмизацию, тогда и логика должна появиться
Как ограничить количество символов в .calc-screen?
А отрицательные числа работают?
да
Почему ошибка появляется с onclick (Uncaught TypeError: Cannot set properties of null (setting 'onclick')
at calc.js:22)
скорей всего у вас ошибка в название класа, в HTML и JS документах розняться названия, проверьте все название пару раз.
в мене теж таке вийшло, то я забув в js написати крапку перед класом buttons :)
Здравствуйте! У меня ошибка calc.js:22 Uncaught ReferenceError: clearall is not defined
at calc.js:22
Что не так я сделал?
Объявил функцию clearAll без скобочек, должно быть clearAll()
есть пару ошибок.
1. если много напечатать цифры выходят за рамки
2. тот же баг когда цифры ответа не помешаются
3. позволяет несколько раз подряд поставить точку
пофиксил
0.1 + 0.2 будет прикол, скорее всего)
Да решается просто же, *10/10
@@ruslwhite это хрень же (0,1 * 10 + 0,2 * 10) / 10 =0,3
как ты решишь с 0.1*3?
вы правы, как так? Что это ха баг?
@@volodymyrkharin2332 особенность float IEEE 754. Сделай округление
а как скачать калькулятор, прост у меня не получилось написать
Я вот подзависла на onclick, чем заменить и как ?
если проблема в том что не работает код и консоль ссылается на ошибку onclick, попробуйте добавить в подключение джаваскрипта defer. Будет:
@@Andrii1728 твой комментарий помог спустя год, спасибо броу
у меня CSS код не работает(. Просто все символы в столбик выстроились
А если в результате штук 10 цифр? Они же вылезут за пределы калькулятора. Уменьшение цифр нужно сделать.
так?
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 });
Ох... мутации... При непонимании как они работают можно загеморроиться на весь день в поиске ощибки 😁
А по коду, наверное всё же нужно следить за characterData.
@@gmmips так не работает
observer.observe(out, { characterData: true });
@@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 });
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 класс
У меня не появился этот калькулятор чё делать? 😫
Как название zip файла в телеге?
Калькулятор слабенький. Нужно добавить память и сложные выражения со скобками.
Выражение должно набираться на экране калькулятора, а уже результат потом по кнопке равно показывается.
Просто заинтриговал, что без евал, а тут и не нужен евал в принципе.
А на php как это реализовать?
Мда, у меня код получился на 180 строк…
Мой затуп в том что я первое и второе число представлял в виде массивов 🥴 а потом в результате джойнил их) но зато прописал логику недопустимости двух запятых в одном числе, а тут её нет, как я понял
красава! но нолик так и не поправил в верстке=)
После нажатия на = не принимает иных значений
мелочь, а обидно
Здравствуйте!
Думаю проверка деления на 0 не совсем правильная, так так не ловит деление на 00, 000 и т.д.
Согласен
Можно делать проверку на infinity, тогда все гуд будет
@@itgid в данном случае можно вместо === 0 сделать == 0 и тогда текст '000' будет интерпретирован как 0 но лучше сразу ловить инфинити и нан
просто напишите функцию которая убирает дубли нулей и всё
через eval получается решение короче и сохраняется приоритет операторов при вычислении 🤓
привет. есть калькулятор на java?
Напиши. Чё там сложно? Можно прям из этого перевести.
@@ВалерийНеФакт так я и спрашиваю есть видео у автора по написанию на java. знал бы я как - написал не спрашивал
@@Ramaario автор пишет на js и php, то есть на java нет
Как это понимать.....
Автор даже не объяснил, как добавить js в html. После добавления файла js в html, код все равно не работает. Не подскажите почему?
Я с такой же проблемой столкнулся. Посмотри, правильно ли написана у тебя функция "onclick". Мог по ошибке написать "oneclick"
Есть косяк еще такой:
1. Нажимаем любое число (например 2).
2. Обнуляем по средством кнопки ас
3.Вводим другое число (например 2) и выходит 22...
ты скорее всего переменные в функции обьявил локально
новые let