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

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

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

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

    Тайм коды:
    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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @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к строк)) так что пишу нормально

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @Sergey-off
    @Sergey-off Год назад

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

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

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

  • @shprints84
    @shprints84 9 месяцев назад +5

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

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

      тоже самое

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

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

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

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

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

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

  • @simonbryczkowski8675
    @simonbryczkowski8675 Год назад +4

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

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

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

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

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

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

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

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

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

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

      мознгн

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

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

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

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

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

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

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

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

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

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

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

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

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

      Делать на electron js

  • @dogvscatfunny9956
    @dogvscatfunny9956 11 месяцев назад

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @НиколайСтепанов-ю3м

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

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

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

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

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

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

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

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

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

    • @uk-lych_sveta
      @uk-lych_sveta Год назад

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

  • @katenka_katrusya
    @katenka_katrusya 11 месяцев назад

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Очень четко 🤟

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

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

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

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

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

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

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

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

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

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

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

    Very Good Practice

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

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

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

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

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

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

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

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

  • @max-anna
    @max-anna Год назад

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

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

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

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

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

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

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

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

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

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

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

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

    Супер

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

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

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

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

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

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

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

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

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

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

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

    Спасибо!!!

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

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

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

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

  • @МашаБукина-в1ц
    @МашаБукина-в1ц 11 месяцев назад

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

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

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

  • @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 Год назад

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