Проект на JavaScript Приложение список задач ToDo

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 122

  • @WebCademy
    @WebCademy  2 года назад +7

    Тайм коды:
    00:00 Обзор проекта
    02:03 Старт работы над проектом
    04:42 Добавление задач
    17:26 Очистка поля ввода и фокус
    19:07 Блок "Список дел пуст"
    22:48 Рефакторинг
    25:37 Удаление задач
    34:21 Блок "Список дел пуст"
    36:27 Отмечаем выполненные задачи
    45:02 Рефакторинг
    50:40 Сохранение разметки в localStorage
    1:00:08 Работа с данными
    1:03:15 Данные. Добавление задач
    1:12:31 Данные. Удаление задач
    1:22:04 Данные. Удаление задач через фильтр массива
    1:27:07 Данные. Статус done
    1:32:38 Данные. Блок "Список дел пуст"
    1:41:38 Данные. Сохранение массива с задачами в localStorage
    1:52:58 Рефакторинг. Функция renderTask
    1:58:01 Публикация проекта на GitHub pages

  • @СемёнЗахаренко-л8з

    Настолько просто и понятно, как будто осваиваю арифметику за первый класс. При вашем таланте вы можете с такой же легкостью объяснять ядерную физику или высшую математику. Спасибо!

  • @shprints84
    @shprints84 11 месяцев назад +6

    Прохожу курсы в Скиллбоксе, запнулся на задаче сделать туду-приложение (там лектор очень быстро показал, как его делать, минут за 15). Решил поискать еще туториалы, посмотрел этот, и все стало намного понятнее. Большое вам спасибо!

    • @pxxx6196
      @pxxx6196 10 месяцев назад +1

      тоже самое

    • @runak56
      @runak56 8 месяцев назад

      Да уже желание деньги обратно требовать, вообще поддержки ноль

  • @ssr.1989
    @ssr.1989 Месяц назад

    Кратко, чётко, ясно и без излишеств!!! Спасибо большое! Теперь лучше понимаю как делать todo с localStorage.

  • @Natali_Max
    @Natali_Max Год назад +2

    Два часа - как пара минут. Получила заряд верьіі в себя. Спасибо огромное!!!

  • @armazet8081
    @armazet8081 8 месяцев назад

    Хочется от души хочу написать, что очень понравилась подача. Приятно стилизованая страница, спокойные объяснения - эталон к которому нужно стремится. Спасибо

  • @aleksanderr4673
    @aleksanderr4673 2 года назад +4

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

  • @Awe88Some
    @Awe88Some Год назад

    Божечки, как же круто! спасибо! это тот случай, когда сложное объясняют простыми словами! я понял, как работать с массивами, у меня были проблемы, я узнал, как обратиться вновь появившемуся элементу на странице, я теперь умею в localStorege! и даже знаю, как НЕ нужно его использовать)))) я искренне Вас благодарю, вы светлый человек! спасибо Вам за это объяснение! вроде ToDo list, а знаний полученных при написании этого кода я получил, как за курс JS! бесконечная благодарность! пересмотрю ваши видео, думаю, я стану гением после такой подачи информации! Живите долго и счастливо!

  • @ЮлияМостовая-ю7т
    @ЮлияМостовая-ю7т 2 года назад +5

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

  • @АлисаЛиса-з2л
    @АлисаЛиса-з2л 3 месяца назад

    Большое спасибо за урок! Все подробно рассказано, что на этапе обучения очень важно. Смотрела несколько уроков, и только после вашего видео все встало на свои места, позднее еще пересмотрю, чтобы закрепить. Лайк и подписка!

  • @simonbryczkowski8675
    @simonbryczkowski8675 2 года назад +4

    так мне не хотелось 2ух часовое видео смотреть, но как оказалось все на много круче чем я предпологал) Спасибо за работу!

  • @tpostolova
    @tpostolova 2 года назад +12

    Как всегда, все четко и лаконично, спасибо Учитель

  • @antonmakarov8669
    @antonmakarov8669 Год назад

    Все работает, все супер. спасибо автору! Остался только один нюанс - по окончании написания кода убираем уже ненужный const emptyList в самом начале.

  • @VeroNi4ka92
    @VeroNi4ka92 Год назад

    Обалдеть, как, оказывается, всё может быть просто и понятно! Спасибо огромное!

  • @POEOneLove
    @POEOneLove 9 месяцев назад

    Ну наконец то. Хоть кто-то написал пример на todo. Везде одни блоги и hello world, а тут todo

  • @katenka_katrusya
    @katenka_katrusya Год назад

    Очень хорошо объясняете, я бы сказала "разжёвываете")), приятно слушать, спасибо вам за видео, пошла смотреть другие)

  • @НискемкромеСовести
    @НискемкромеСовести 2 года назад +3

    отличный обучающий материал. я прямо чую как растет мознг

    • @dm92mk
      @dm92mk 2 года назад

      мознгн

  • @uk-lych_sveta
    @uk-lych_sveta 2 года назад +6

    Юрий вы просто маг в IT индустрии, особенно в части объяснения и понятности того контента, который хотите донести своим подписчикам и другим посетителям Вашего канала. Спасибо за Ваш труд и старания. Желаю всяческих успехов и удачи.

    • @WebCademy
      @WebCademy  2 года назад +1

      Спасибо за позитивный отзыв!)

    • @uk-lych_sveta
      @uk-lych_sveta 2 года назад

      @@WebCademy Юрий, если это возможно сделайте пожалуйста мастер-класс по форме обратной связи на сайте, от начала до конца. Думаю зайдет всем начинающим верстальщикам.

  • @НиколайСтепанов-ю3м
    @НиколайСтепанов-ю3м 3 месяца назад

    Столько много полезной и интересной информации, вам большое спасибо за это видео!!!

  • @VideosFromNorway
    @VideosFromNorway Год назад

    Плюс еще один урок: done!Спасибо как всегда все класс!

  • @la_la4997
    @la_la4997 Год назад +1

    Вы чудесный преподаватель, спасибо вам!!!!!❤❤❤❤❤❤

  • @ЮлияНикифорова-з1э

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

  • @uliqqesss__
    @uliqqesss__ 3 месяца назад

    Спасибо большое за чудесный курс 😊

  • @nikomunikabelen8540
    @nikomunikabelen8540 2 года назад +4

    Спасибо, очень хороший урок
    объяснение максимально понятные, что очень важно
    первая часть на легке сделалась, ибо уже практиковал по вашим урокам
    с данными конечно тяжко, непросто все эти нейронные связи создать, в моей трудной и долгой голове))
    приходится по 5 раз одно и тоже с паузами переделывать))

  • @MrGreenman02
    @MrGreenman02 Год назад +3

    классный был урок!) получил не только знания но и удовольствие от учёбы!)
    теперь Javascript мне нравится еще больше!) Спасибо Юра за Труд!)

    • @WebCademy
      @WebCademy  Год назад

      Рад что было и полезно и интересно!) Спасибо за комментарий!)

  • @ea4613
    @ea4613 Год назад

    Ух ты !!! Спасибо большое за урок 🙏. Классное подробное объяснение 👍. Отдельное спасибо за несколько вариантов решения одной задачи , проговаривание комбинаций клавиш для ускорения работы с кодом, красивость кода и публикацию на гитхабе. 🙏👍 Ждём-с 🧘‍♂️ SPA todo 😅😉

  • @artemsergeev4833
    @artemsergeev4833 2 года назад +2

    Спасибо! Все четко, доходчиво и понятно!

  • @pechkinjohn
    @pechkinjohn Месяц назад

    Спасибо! Очень подробно и понятно все❤

  • @GreatOsmanSultan
    @GreatOsmanSultan 2 года назад +1

    Профи и талант преподавания! Спасибо.

  • @ТимурДжабаров-п4ю

    спасибо! Очень понравилаясь подача инф-ии, красивый и лаконичный код получился!

  • @razvalnuy
    @razvalnuy Год назад +1

    Благодарю изучал локал сторайдж теория максимально легкая, но вот на практике думал как же будет правильно сделать и нашел у вас реализацию, спасибо!

  • @crn05
    @crn05 2 года назад +1

    Очень четко 🤟

  • @СергейМурин-ь8х
    @СергейМурин-ь8х Год назад +1

    Спасибо, все просто шикарно

  • @Balenciaga_police
    @Balenciaga_police Год назад

    Большое спасибо за ваши уроки

  • @Мария-ц8ъ2е
    @Мария-ц8ъ2е 2 года назад

    Спасибо большое. Очень хорошее объяснение. Все понятно и легко.

  • @XNADA93LB
    @XNADA93LB Год назад

    спасибо за урок !!!!супер . шикарное детальное обьяснение.

  • @johngalt6376
    @johngalt6376 Год назад

    Наконец-то JavaScript в деле ))

  • @WockeezChannel
    @WockeezChannel 2 года назад +3

    Какая у вас тема vscode, не подскажете?

  • @СтаниславГорячев-г1ъ

    Спасибо Вам очень понятная подача, низкий вам поклон

  • @jasurbekshomaqsudov2208
    @jasurbekshomaqsudov2208 2 года назад +3

    Спасибо за урок, как раз я зделал тодо для портфолио.

    • @sartjhon3300
      @sartjhon3300 2 года назад +1

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

    • @jasurbekshomaqsudov2208
      @jasurbekshomaqsudov2208 2 года назад +1

      @@sartjhon3300 Ok, Спасибо

    • @dm92mk
      @dm92mk 2 года назад

      @@sartjhon3300 я думаю ничего страшного не будет, если переписать всё заново и самостоятельно, по своему сверстать и оформить приложение, добавить дополнительные функции и т.д. Например добавить очки за выполнение дел чтобы был стимул их делать и т.д.

  • @max-anna
    @max-anna 2 года назад

    спасибо за урок! очень понятно объясняете👍🏼

  • @rostyslavkinash5232
    @rostyslavkinash5232 2 года назад

    спасибо за урок

  • @clojure_sith
    @clojure_sith Год назад

    Спасибо за практичный ролик, было очень полезно

  • @Anatoli-bq1pe
    @Anatoli-bq1pe Год назад

    Благодарю за классный видос!

  • @bearddev9974
    @bearddev9974 2 года назад

    Супер

  • @artemsergeev4833
    @artemsergeev4833 2 года назад +1

    Проверку через trim() необходимо произвести, иначе добавляются задачи с пробелами и без текста. В функцию addTask добавить код if (taskInput.value.trim() == " ") return;

    • @dm92mk
      @dm92mk 2 года назад

      что-то не работает пытаюсь понять в чем дело

    • @dm92mk
      @dm92mk 2 года назад

      я короче глобально запретил вводить первым символом пробел
      taskInput.oninput = () => {
      if (taskInput.value.charAt(0) === ' ') {
      taskInput.value = "'';
      }
      }

  • @dokers2084
    @dokers2084 Год назад

    Спасибо за видео, какая у вас стоит цветовая тема VS code? Хочу такую же поставить

  • @deGGenerate
    @deGGenerate 2 года назад

    Когда рефакторили код и выносили логику в отдельную хэндлер функцию можно было пройтись по теме модулей в js и вынести функцию в отдельный модуль

  • @MurodilIbroximov-pq1wl
    @MurodilIbroximov-pq1wl Год назад

    Very Good Practice

  • @SNSDfOu
    @SNSDfOu Год назад

    спасибо, очень полезно

  • @banderprofi
    @banderprofi 2 года назад +1

    В настройках редактора надо изменить количество отступов с 4 на 2 - будет больше видно кода, можно ещё скрыть крайнюю левую вертикальную панель

    • @MelkoR4111
      @MelkoR4111 2 года назад

      с 4 отступами удобнее

    • @banderprofi
      @banderprofi 2 года назад

      @@MelkoR4111
      Да ну, несколько вложенностей и конца и края не видать

    • @MelkoR4111
      @MelkoR4111 2 года назад

      @@banderprofi экран больше покупай)

    • @banderprofi
      @banderprofi 2 года назад

      @@MelkoR4111
      С экран норм, у меня 34", ты просто мало пишешь, ещё не пришел к понимаю, что 4 - это много

    • @MelkoR4111
      @MelkoR4111 2 года назад

      @@banderprofi у меня есть проекты где по 20к строк)) так что пишу нормально

  • @СтаниславГорячев-г1ъ

    хотел поинтересоваться, а есть ли у вас курс только с практикой по js ?

  • @ЕвгенияАлехина-в2я
    @ЕвгенияАлехина-в2я 2 года назад

    Клевое видео, осталась довольна

  • @ruslantt7528
    @ruslantt7528 10 месяцев назад

    35:14 Почему, если равно единице? Список дел долен быть пустым, чтобы появилось это окно, то есть должно быть "если меньше единицы". Не понимаю почему это работает

    • @WebCademy
      @WebCademy  10 месяцев назад

      emptyList и есть тот самы один элемент. Если задач нет, то остается только он.

  • @egorov-dev
    @egorov-dev 2 года назад

    Спасибо за отличный урок! Если можно, подсказку, как удалить все выполненные задачи?:)

  • @gerz_og
    @gerz_og 2 года назад

    начал только смотреть, может потом исправите. Почему инпут забираете отдельно если он уже есть в form который получили выше. Так по феншую вроде правильней.

  • @KarandashChannel
    @KarandashChannel Год назад

    Посмотрел, спасибо. Хороший урок. Но немного позабавил тот факт, что наравне с такими более - менее продвинутыми функциями языка, таких как навигация по dom и обработка событий, автор иногда останавливается на уточнении, что такое оператор присваивания, а что - сравнения))

  • @vaspurakavdalian1133
    @vaspurakavdalian1133 10 месяцев назад

    Урок очень классный ,супер .Юрий ,я не смог найти стартовый код к уроку.Поискал в ТГ ,но не нашёл

  • @anndyy7
    @anndyy7 Год назад

    Можно к этому как-то прикрутить создание диаграмм Ганта? На основе данных которые мы указываем в задаче? Подскажите куда копать

  • @dmaberlin
    @dmaberlin 2 года назад

    Спасибо!!!

  • @ludoman228zxc
    @ludoman228zxc 5 дней назад

    Есть кто живой?
    Почему у меня кнопка формы ничего не отправляет по событию "submit"? если переделать событие на "click", тогда все работает, но так как все это висит на форме, то клик отрабатывает по любому элементу формы. Кликаешь на инпут, чтоб ввести данные, тебе сразу добавляет в список пустую задачу

  • @saidyusupov8686
    @saidyusupov8686 4 месяца назад

    Здравствуйте, есть ли другой способ кроме insertadjacentHtml . не хочется что бы код html был в js . через createelement , appendchild

  • @alEL321
    @alEL321 2 года назад

    Профессионально.

  • @development76
    @development76 8 месяцев назад

    Здравствуйте, а где то можно скачать код этого урока? В вашей телеге не нашел(((

  • @dd4el12
    @dd4el12 Год назад

    здраствуйте сейчас github pages автоматический не публикует сайт, надо написать самому домен. Но у меня каждый выходить ошибка, не могли бы подсказать как правильно написать?

  • @torycat1337
    @torycat1337 2 года назад

    Кращий, просто кращий))
    Тільки є одне але, в аддтаск потрібно сказати, щоб в задачу не додавалися пусті поля, а так все гуд)

    • @WebCademy
      @WebCademy  2 года назад

      Дякую) Да, можно добавить trim() чтобы обрезать пустые символы.

  • @otollfe9183
    @otollfe9183 Год назад

    можете подсказать, как добавить функцию редактирование? Добавил кнопку, настроил ее нахождение, а саму функцию редактирования не могу придумать как прописать?

  • @host_admin
    @host_admin 4 месяца назад

    А как сделать счетчик который будет считат количество задач ?

  • @ostapmiklysh9470
    @ostapmiklysh9470 8 месяцев назад +1

    а где файл взять?

  • @ishurabotu9424
    @ishurabotu9424 Год назад

    Отличный урок, все предельно понятно, спасибо!
    Но, есть одно НО. После выгрузки из LocalStorage зачеркивание не убирается. Срабатывает, как и должно после обновления очередного, но, зачеркивание не убирается

    • @66luv6
      @66luv6 Год назад

      такая же проблема, решил?

    • @ishurabotu9424
      @ishurabotu9424 Год назад

      @@66luv6 да, там с классами я перемудрил, все забываю посмотреть))
      Посмотри, что меняется при нажатии в браузере и что отличается при выгрузке локалСтораджа

  • @Ксюша-у1я
    @Ксюша-у1я Год назад

    Добрый день, пытаюсь сделать по этому принципу список дел на одной странице для нескольких пользователей, столкнулась с тем, что работает только первая форма, если закомментить в html первую - работает вторая, а последующие - нет. Также пыталась разделить на три разные html страницы - та же история, работает только одна первая. Можете подсказать, пожалуйста, в какую сторону двигаться и что применить?

  • @theoty-js
    @theoty-js 2 года назад +3

    Всем рекомендую

  • @АлександрПантюхин-о3ъ
    @АлександрПантюхин-о3ъ 9 месяцев назад

    Скажите, а как реализовать эту же задачу, но чтоб не как веб сайт, а как приложение , которое открываеться на рабочем столе при нажатии на ярлык с этим приложением. Я исею ввиду, чтоб не index.html запускал , а например какой нить .exe файл или еще что нить ? Тоесть как его слелать не веб прилодением. Спасибо заранее за ответ

    • @WebCademy
      @WebCademy  9 месяцев назад +1

      Делать на electron js

  • @МаксимСафронов-ф9ж
    @МаксимСафронов-ф9ж 2 года назад

    В объяснение все максимально непонятно. Почему только, при сохранение разметки через localStorage, и удалении всех задач из списка, не появляется блок "Список дел пуст"?

    • @rvitalia1
      @rvitalia1 Год назад

      насколько я понял, данные сохраняются в формате html collection. и когда идет адресация к emptylist он класс то удаляет, только не поянтно где.....и у нас уже получается не работает. поэтому вместо этого ставим: tasksList.children.item(0).classList.remove('none');

  • @ВалерийДынько
    @ВалерийДынько 2 года назад

    а можете кто нибудь объяснить в какой момент done меняется с false на true в newTask, мы ведь нигде не перезаписываем значение

    • @ShaDe059
      @ShaDe059 Год назад +1

      В функции doneTask производится проверка, был ли клик по кнопке задача выполнена, в теле условия меняем значение done на противоположное - task.done = !task.done

  • @ИльяЩербаков-э4р
    @ИльяЩербаков-э4р 2 года назад

    После написания кода до 1:00:08 если добавить задачи и перезагрузить страницу а затем удалить эти задачи то тогда почему то блок "Список дел пуст" не появляется :( Почему? Проверьте у себя еще раз пожалуйста, возможно я где то допустил ошибку

    • @WebCademy
      @WebCademy  2 года назад

      Посмотрите какие условия к нему прописаны. В любом случае сначала показываем/скрываем его на основании разметки, после на основании данных. Вариант с данными предпочтительнее. Во второй половине урока это показано. Код с урока есть в ТГ канале.

  • @Landskrunn
    @Landskrunn 2 года назад

    Привет, как правильно называется объект описания задачи?
    const newTask = {
    id: Date.now(),
    text: taskText,
    done: false,
    }
    Это не прототип и конечно не класс, хочу знать когда это принято использовать, чтобы не сойти за говнокодера)

    • @WebCademy
      @WebCademy  2 года назад

      Объект. Здесь сразу формируем объект.
      Можно было бы использовать Class или функцию конструктор. Но в данном случае - сразу формируем объект.

  • @lolerkapich
    @lolerkapich Год назад

    Кто знает как удалить выполненные задачи по кнопке "удалить все выполненные задачи"?

  • @dogvscatfunny9956
    @dogvscatfunny9956 Год назад

    У этого автора так и не понял где взять стартовую страницу html?

    • @WebCademy
      @WebCademy  Год назад

      Стартовый код к уроку в ТГ канале: t.me/+9XtDDNBdHAk4Yjhi
      Переходите в ТГ канал и в нем ищите пост за 25.06.2022

  • @Sergey-off
    @Sergey-off 2 года назад

    не доделали. Не дописали код для кнопки удалить сделанные задачи

  • @mirzomok
    @mirzomok Год назад

    не понимаю зачем каждый раз проверять объявление переменной в console.log(кажется эт пустая трата времени)

    • @WebCademy
      @WebCademy  Год назад

      Урок для новичков. На первых порах порой такие простые ошибки проскакивают, поэтому лучше проверять каждую строчку кода.

  • @МашаБукина-в1ц
    @МашаБукина-в1ц Год назад

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

    • @WebCademy
      @WebCademy  Год назад +1

      Конкретика будет? Проект для тех кто знаком с основами. Посмотрите ролик JS за 6 часов. А перед этим рекомендую с версткой ознакомиться. Невозможно же каждое видео с совсем азов начинать.

  • @jasurbekshomaqsudov2208
    @jasurbekshomaqsudov2208 2 года назад +2

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

  • @xxxxx-iy1lc
    @xxxxx-iy1lc 2 года назад

    Здравствуйте, я все делал как вы, но у меня в консоль выводить вот это (main.js:2087 Uncaught TypeError: Cannot read properties of null (reading 'insertAdjacentHTML')
    at HTMLFormElement.) выводит оно, когда мы выводить в шаблонные строки li . также я правильно обращаюсь к taskList.insertAdjacentHTML('beforeend', taskHTML), но я не могу разобраться в чем суть проблемы

    • @WebCademy
      @WebCademy  2 года назад

      Cannot read properties of null - скорее всего в данном контексте элемент для которого вызывается insertAdjacentHTML не был найден, то есть неверно произведен поиск по querySelector.

    • @LiSa-ld6ue
      @LiSa-ld6ue 2 года назад

      Столкнулась с той же проблемой после того, как рефакторили код в самом конце. Дело в том, что переменная taskHTML стала локальной, когда мы её перенесли в отдельную функцию рендеренга задачи. Не знаю, правильно ли я сделала, но я объявила эту переменную через let taskHTML; в самом начале кода после объявления массива tasks. А в функции renderTask(task) соответственно убрала слово const. Заработало ;)

  • @unknown.6914
    @unknown.6914 Год назад

    прекрасное видео, спасибо 😊