На 9:30 у вас при нажатии пропадают цифры, а у меня ничего не происходит выдает такую ошибку Uncaught TypeError: Cannot set properties of null (setting 'onclick')
Лучше сделать лисенер на каждую кнопку. Все обработчики вынести в отдельные функции для реюза т.к. мы можем нажимать на ui и можем нажимать на нумпаде. Будет читаемый, расширяемый и понятный код. Так же легко будет покрыть тестами.
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
Извиняюсь за правки учителю, сам я разбираюсь меньше в этом всё, но знаю точно, что пишется не "secont", а "second". Понимаю, что там вы указывали комментарий в JavaScript и он ни на что не влияет, но просто небольшая помарка) А так уроки очень познавательные, спасибо большое) Всё стало гораздо понятнее в работе с HTML, CSS и JavaScript )
Ещё неплохо было бы, если б Вы объяснили код , что делает например onclik. Я начинающий и при просмотре не понятно. Опишите пару слов берёт это делает это и это и всё будет просто замечательно
Ещё нужно обработать следующую ситуацию: пользователь ввёл a, b и знак, но вместо "=" нажимает другой знак. Здесь 2 варианта: 1) сделать вычисление, как бы при нажатии на равно, результат будет в переменной a, записать этот новый знак и ждать ввода b 2) выводить вверху сложное выражение, которое вычислить по нажатию "=" Ещё нужно задать количество цифр после точки в выводе результата.
После длительной работы с React/ReactNative и их библиотеками сел для разнообразия сделать калькулятор и потратил на это 2 часа … чтобы полностью без ошибок работал, но результатом я остался недоволен, решил посмотреть видео 😁
после реакта такие видео смотреть вредно. т.к. в них акцент на работу с DOM API, что при разработке на Реакте считается плохой практикой - на прямую работать с DOM 🤓 и вообще кто планирует изучать Реакт, то после базы по JS'у нужно сразу переходить на Реакт и не тратить время на DOM. это правда могут спросить на собеседовании, но вот как начнут спрашивать, тогда и выучите 😉
Мда, у меня код получился на 180 строк… Мой затуп в том что я первое и второе число представлял в виде массивов 🥴 а потом в результате джойнил их) но зато прописал логику недопустимости двух запятых в одном числе, а тут её нет, как я понял
есть пару ошибок. 1. если много напечатать цифры выходят за рамки 2. тот же баг когда цифры ответа не помешаются 3. позволяет несколько раз подряд поставить точку
if(key == '.' && a.includes('.')) { console.log(a, b, sign); out.textContent = a; return}; // если нажата кнопка '. ' и уже есть точка в числе, ничего не делать
спасибо за видео. Делал с вами и все получилось. Нашел 1 баг. Если после каждого действия перед следующим вычислением не нажимать равно, то выводит ошибочные данные. Прим: 1) 2+2 = 4 -> 4+2 = 6 (так работает корректно, но обычно люди не нажимают на равно после каждого действия если нужно произвести несколько операций. И в этом случае если если мы нажмем 7+7-7 (например), то выведет -70. Но рекомендую всем новичкам постараться пофиксить это самим, пока я фиксил этот и другие баги получил дополнительных знаний. Еще раз спасибо за урок
Не подскажете, как можно округлить числа с множеством цифр после запятой при делении? Например «0.5555555» можно же округлить до «0.5» ? При этом чтобы при выполнении других математических операций в ответе было целое число например «46», а не допустим «46.0»? А то никак не могу сообразить, как сделать округление, заранее спасибо
привет, решил ошибку с нулем перед числами: добавил массив digitSecond, где оставил только числа в условия добавил пункт if (a === '0' && digitSecond.includes(key)) { a = ' '; }
В общем у меня получилось подключить calc.js к index.html только через После чего получил ошибку Uncaught TypeError: Cannot set properties of null (setting 'onclick') в строке document.querySelector('.ac').onclick = clearAll; Не пойму чего творить дальше. Поможите плиз. Винда 10 21H2 Хром Версия 96.0.4664.45
А нужно папку какую то на рабочем столе создавать,что бы сонхронизировать между собой java и html,а то система ошибку в написании кода выдаёт,и в названии файла
Около двух месяцев назад я писал свой собственный первый калькулятор на JS, и по началу думал что всё легко и без напряжения, но когда вник в суть и логику работы - понял что есть просто 1000 вещей которые можно добавить и исправить, но я остановился на простом и рабочем варианте. Когда я писал его, я использовал eval, но даже сегодня, когда я сделал калькулятор по примеру из видео у меня остался один не решённый баг... А заключается он в том, что пользователь определённо захочет потыкать на кнопочки, и нажать, к примеру "." несколько раз подряд. Так вот, я пытался сделать проверки предыдущего символа, чтобы если это вдруг ".", то запретить её повторный ввод. Но ведь после точки можно поставить снова число, А ВОТ ПОСЛЕ НЕГО УЖЕ СНОВА ТОЧКУ! А ведь чисел наподобии "3.14.1" не существует, и я пытался снова добавить проверки на наличие точки, и перебор всей строки, и кучу ещё всяких заморочек с этим. В итоге получается полнейший бред из NaN'ов инфинити и ошибок. В общем, если вы знаете пути решения этой проблемы, прошу отписаться в комментариях, а если это читает автор видео, то записать третью часть с решением проблем, и доработкой неработающей части нашего кальулятора)
Если взять 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); } }
Мне интересно было бы посмотреть на ограничение цифр. Как оно делается. Я пробывал методы slice, substring. У меня была такая проблема что я ограничил этими методами, ну цифры остановились на ограничителе в 10 цифр и стали перезаписывать друг друга, так и не получилось исправить.
Всем привет! У меня на строке const key = Event.target.textContent; выдает ошибку в браузере. Во-первых event с маленькой буквы зачеркивает, во-вторых в ошибке указано что нет возможности получить данные textContent...хотя файл к html подключен. Расстроилась, пошла искать другое видео. Первый раз пыталась сделать что то на JS)
Ох... мутации... При непонимании как они работают можно загеморроиться на весь день в поиске ощибки 😁 А по коду, наверное всё же нужно следить за 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 класс
У меня непонятная проблема: для класса buttons всегда flex стоит и это не меняется, то есть все кнопки в один ряд и они при гриде не меняют свое положение вообще. Хром последняя версия, код идентичный ( смотрел код в самом браузере и строка с display:grid была зачеркнута)
Калькулятор слабенький. Нужно добавить память и сложные выражения со скобками. Выражение должно набираться на экране калькулятора, а уже результат потом по кнопке равно показывается. Просто заинтриговал, что без евал, а тут и не нужен евал в принципе.
Скажите, а почему нельзя было onclick повесить на . btn вместо . buttons. Тогда бы не пришлось проверять нажата ли кнопка. Попробовал так сделать, но не работает почему то
Я вот сделал этот калькулятор и у меня появился вопрос, почему нет никаких parseInt? как из строки получается число и почему нет бага джаваскрипта с вот этими 2+22 = 222
Хочу добавить вот что. Вы предусмотрели когда нажимают 5+=10 , так вот , 5+===2=7 Проблема с точками, проблема в том, что ваш калькулятор с дробными числами работает неверно (компы такие тупые) P.S. Для компа 0.2+0.1=0.30000000000000004
@@РоманСтепановский-з9ц да, 1 не там подключил js (нужно в HTML ниже последнего , 2 проверь верно ли записан регистр:а именно там где в джава скрипте идёт блок с clearAll ниже две строки которые начинаются с if (! event.... У меня в этих строках list было написано с маленькой буквы