Уроки JavaScript Практика #4 Пишем выпадающее меню

Поделиться
HTML-код
  • Опубликовано: 12 дек 2016
  • В этом уроке мы напишем самое примитивное выпадающее меню, но которе поможет разобрать все нюансы разработки в javascript.
    ========================================================
    ПОДПИШИСЬ на канал "Web Developer Blog" - goo.gl/Ai4OGa
    И не пропускай новые видео!!!
    ========================================================
    ПЛЕЙ-ЛИСТЫ МОЕГО КАНАЛА:
    JavaScript практика - goo.gl/rxsyeX
    Основы JavaScript - goo.gl/Cw7Vqv
    Уроки Bootstrap 4 - goo.gl/65gmmS
    Уроки Framework для верстки Foundation 6 - goo.gl/Yi2jfc
    Рубрика "Основы за 10 минут" - goo.gl/QIvpDD
    Верстка сайта на Foundation 6 - goo.gl/gVS45o
    Основы препроцессора SASS - goo.gl/f4BDww
    Уроки по Sublime text 3 - goo.gl/SjiKM2
    Видео про заработок на RUclips - goo.gl/VxdirI
    Создаем интернет магазин на PrestaShop - goo.gl/jop7M4
    Уроки jQuery - goo.gl/xPnZE9
    ========================================================
    ПОДПИШИСЬ на Группу Вконтакте "Web Developer Blog" - goo.gl/6mO5GL
    ========================================================
    Мой заработок на RUclips - ►goo.gl/C8Jzpv

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

  • @nandreyk
    @nandreyk 3 года назад +5

    вообще-то уважающий себя мужчина должен построить дерево, вырастить дом и посадить сына)))

  • @debasher
    @debasher 5 лет назад +5

    Как вариант:
    HTML:
    Menu1
    SubMenu1

    Menu2
    SubMenu1

    CSS:
    .SubMenu {
    visibility : collapse;
    z-index: 1;
    height : 0px;
    border: 2px solid black;
    width : 0px;
    left: 60px;
    top: -20px;
    background-color : burlywood;
    position: relative;
    }
    .Menu {
    z-index: 0;
    height: 20px;
    width: 100px;
    border: 2px solid black;
    background-color: burlywood;
    margin: 5px;
    text-align: center;
    vertical-align: central;
    padding: 4px;
    }
    ul {
    list-style-type: none;
    }
    JS:
    function ShowSubMenu(element) {
    for (var i = 0; i < element.children.item(0).childElementCount; i++) {
    var obj = element.children[0].children[i];
    obj.style.height = "20px";
    obj.style.width = "100px";
    obj.style.visibility = "visible";
    }
    }
    function HideSubMenu(element) {
    for (var i = 0; i < element.children.item(0).childElementCount; i++) {
    var obj = element.children[0].children[i];
    obj.style.height = "0px";
    obj.style.width = "0px";
    obj.style.visibility = "collapse";
    }
    }
    Надеюсь кому то помог.

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

    Ролику уже 6 лет и тем не менее хочу сказать вам искреннее спасибо. Если бы не такие люди, как вы, то было бы значительно сложнее обустроеться в IT из-за перенасыщенности рынка. А так, благодаря вам, необходимо иметь качество, которая присущи далеко не каждому, а именно завидное терпение, а также, нейронные сети, не позволяющие мозгу сгореть от перенасыщенности сложно перевариваемой информации.

  • @hazcker5746
    @hazcker5746 6 лет назад +56

    Меня как новичка сбивает с толку когда объявляют переменные с таким же именем как и свойство и тд. Вот например объявили переменную target, а далее event.target в этом случае что делает? и можно ли поменять event на x, или event.target (таргет на х) ? или это специальные зарезервированные слова, как alert и тд?

    • @user-ji2pp2et1r
      @user-ji2pp2et1r 4 года назад

      да можно

    • @MaksimStroilo
      @MaksimStroilo 4 года назад

      event.target отслеживает где находиться курсор, как-то так

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

      привыкаешь)) let tg = event.target;

    • @nepcz
      @nepcz 3 года назад +1

      многие кто учит так делает. ппц сбивает с толку

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

    Большое спасибо за очередной урок!

  • @apa6368
    @apa6368 4 года назад +15

    слишком быстро и непонято (

  • @user-wr2df9re1n
    @user-wr2df9re1n 3 года назад +2

    s[0].style.display = 'block'
    Это же по идее будет всегда раскрывать первое submenu, не важно наведем мы левое и правое, или я что-то не понимаю?

  • @azelsky
    @azelsky 6 лет назад +4

    можешь пожалуйста объяснить document.getElementById('nav').onmouseover = function(event),
    в каких случаях мы ставим event

  • @k777ig
    @k777ig 7 лет назад +23

    парень продолжай!!!

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +9

      Конечно!

    • @User-es9rh
      @User-es9rh 4 года назад

      ​@@SuprunAlexey о чем вы? смысл от этих выпадающих меню если они показывают один и тот-же контент

  • @Nodorgrom
    @Nodorgrom 6 лет назад +3

    Это, только попрактиковаться, с выборами селекторов, с перебором массива, с работой логики данного меню. Вся эта схема работает в три строчки через CSS, что еще более нативнее, чем JS. Я имею ввиду через .class:hover. А если нужна задержка, то через property cubic-bezier мы можем настроить скрытие по своему желанию. А так лайк за труд))

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

      Class.hover это при наведении, а как сделать чтобы было active для одной из 5 кнопок и это могло меняться. Можно как то через css или в данном случае только js?

  • @nepcz
    @nepcz 3 года назад +11

    Видео о том как сделать нерабочее выпадающее меню.

  • @user-mp5ig1ge5y
    @user-mp5ig1ge5y Год назад

    Спасибо за уроки очень помоголи 😁

  • @user-zu5pj8mo3u
    @user-zu5pj8mo3u 5 лет назад

    подскажите неуку если будет более одного подменю
    var target = event.target;
    if(target.className == 'menu-item'){
    var s = target.getElementsByClassName('submenu');
    closeMenu();
    for(var i = 0; i < s.length; i++){
    console.log(s);
    s[i].style.display = 'block';
    }
    }
    }
    выводит только одно подменю подскажите что делаю не так

  • @stanislavmalyshev5209
    @stanislavmalyshev5209 6 лет назад +1

    Спасибо за урок. Не все пока что понятно, буду разбираться. Код прописал и прикрепил в комменте.
    Как понял код срабатывает при event(движение мыши), определяет на что она наведена. Если это пункт меню, то открывается подменю, а все остальные подменю закрываются. Это все работает пока указатель находится на полях меню и подменю.
    document.getElementById("nav").onmouseover = function(event) {
    var target = event.target;
    if (target.className == "menu-item") {
    var s = target.getElementsByClassName("submenu");
    closeMenu();
    s[0].style.display='block';
    }
    }
    document.onmouseover=function(event) {
    var target = event.target;
    console.log(event.target);
    if (target.className != 'menu-item' && target.className != 'submenu' ){
    closeMenu();
    }
    }
    function closeMenu() {
    var menu = document.getElementById('nav');
    var subm = document.getElementsByClassName("submenu")
    for (var i=0; i < subm.length; i++) {
    subm[i].style.display = 'none';
    }
    }

  • @Suhnya
    @Suhnya 5 лет назад +1

    Семантика на сегодня понимает и можно не оборачивать в div

  • @jplusplus683
    @jplusplus683 6 лет назад +8

    Спасибо за урок, один вопрос как срабатывает function(event)? где берется события?

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

      здраствуйте, ответ нашли?) я только приступил к практике и тоже интересно)

    • @user-po1ez6ke6m
      @user-po1ez6ke6m Год назад +1

      @@jimhawkins2483 он не рандомно так аргумент в функии назвал, ивент это как бы встроенная функция внутри addeventlistener

    • @user-po1ez6ke6m
      @user-po1ez6ke6m Год назад +1

      @@jimhawkins2483 и с этим ивентом можно работать, например event.preventDefault() запрещает странице перезагружатся если это необходимо

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

      @@user-po1ez6ke6m спасибо за ответ, не скажу что стало намного ясней, но я покопаю)

  • @arayoflight
    @arayoflight 4 года назад

    Вы пишете для мыши, соответственно для тачскринов код бесполезен. Сейчас можно для десктопов, ноутов использовать hover, а код js писать для тачскринов, где hover не работает.

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

    Дякую за цікаве відео!

  • @cheekibreeki9315
    @cheekibreeki9315 3 года назад +1

    Странно, очень странно реализовано. Я вижу это во вложенном списке, к элементам которого добавляется класс "hover" при наведении. По крайней мере на olx и розетке именно такая реализация.

  • @nikitamihalyov7450
    @nikitamihalyov7450 7 лет назад +61

    Это не самый простой способ, это максимально усложнённый способ
    Всё можно сделать проще с помощью CSS:
    .submenu { display: none; }
    .menu-item:hover .submenu { dispaly: block; }
    Всего лишь две строчки кода CSS

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +43

      Я вам говорил о практике Js и о понимании примитивных действий, так же умении их воспроизводить.

    • @kimblinov1594
      @kimblinov1594 6 лет назад +16

      суть не сделать как проще, а понять логику на JS

    • @edgarcherqezyan7937
      @edgarcherqezyan7937 6 лет назад

      так не работоет что значет .menu-item:hover .submenu

    • @rovnogames8162
      @rovnogames8162 6 лет назад

      .submenu { display: none; } .menu-item:hover .submenu { dispaly: block; } hover сам это выполняеться действие при наведении то есть при наведении на submenu выпадет блок потому что в .submenu он скрыт, а в hover.submenu написано что это есть блочным элементом значит при наведении будет показываться блочный елемент то есть видимым

    • @sdsaasdasd4683
      @sdsaasdasd4683 6 лет назад +3

      откуда интересно такие умники лезут??? автор упомянул о том, что это не лучший способ как минимум 2 раза.

  • @nikitafromov9269
    @nikitafromov9269 7 лет назад +1

    Объясните пожалуйста, почему именно s[0](после функции closeMenu() )
    s[0].style.display="inline-block";

    • @tutovMaksym
      @tutovMaksym 5 лет назад +1

      У меня та же проблема, при наведении на menu-item всегда появляется только первое submenu, естественно при подмене s[1] будет видно второе submenu. Это понятно, что число в массиве, но у автора работается все адекватно

  • @marytoch9357
    @marytoch9357 4 года назад +1

    Всё круто и понятно очень. Без лишнего. Одного не понимаю для чего внутри функции closeMenu() получать переменную menu ведь она не используется вроде как. Буду благодарна за пояснение ))

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

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

  • @Oksana_Bon
    @Oksana_Bon 4 года назад

    единственное непонятно это console.log(event.target);
    но без него подменю не исчезает и вроде как можно заменить на
    window.onload = function() {closemenu();}

  • @22prize22
    @22prize22 5 лет назад +6

    Не работает( Ни код автора, ни коды из комментов.

  • @gratgrating2875
    @gratgrating2875 7 лет назад +13

    Хорошее видео, есть один момент: Если крепить скрипт в head'е, работать не будет (в отличии от предыдущих уроков). Решается переносом в body. Обращаю на это внимание, т.к. сам споткнулся.

    • @user-fb2bl7dn6k
      @user-fb2bl7dn6k 7 лет назад

      Правильно, т.к. к моменту загрузки скрипта в head`е, страницы(body) ещё не существовало

    • @vladmart5268
      @vladmart5268 7 лет назад +8

      defer в помощь || window.onload = () => {}

    • @user-mr6yt2lz5v
      @user-mr6yt2lz5v 5 лет назад

      Спасибо Вам.

    • @sergeysergey4325
      @sergeysergey4325 5 лет назад

      спасибо тебе добрый человек!

  • @nikolaiUlianov
    @nikolaiUlianov 4 года назад

    Зачем нужна переменная menu в функции closeMenu? Я не вижу чтобы она где-то понадобилась?

  • @user-yu9qr7ii4m
    @user-yu9qr7ii4m 3 года назад +1

    У меня 1 вопрос event в функции function(event) это простое название или это специальный аргумент ?

  • @user-zz2lj5nr7n
    @user-zz2lj5nr7n 3 года назад +3

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

  • @user-xr1ek1mw8e
    @user-xr1ek1mw8e 11 месяцев назад

    Чтобы функция работала корректно ее необходимо обернуть в обработчик события 'DOMContentLoaded', потому что она использует метод getElementById для доступа к элементу с идентификатором 'nav'. Этот метод возвращает элемент только после того, как DOM-структура документа была полностью построена, что происходит при событии 'DOMContentLoaded". То-есть в
    window.addEventListener('DOMContentLoaded', function() {
    }, true);

  • @vip51000
    @vip51000 5 лет назад

    По вашему мнению, материалы по javascript 2016 года, являются еще актуальны ? (хочу начать учить)

    • @vip51000
      @vip51000 5 лет назад

      @Alex Lastname спасибо за ответ

    • @artemkatr9483
      @artemkatr9483 3 года назад

      @@vip51000 ответ не видно, что за ответ?

    • @vip51000
      @vip51000 3 года назад

      @@artemkatr9483 ответ был удален, но по-моему да

  • @user-xc6ns4tl3z
    @user-xc6ns4tl3z 5 лет назад +4

    Дэбажить код алертами :D Дада помню как "алертировал" чуть ли не каждую строку) Потом левел-апнулся и начал использовать console.log :D

    • @oliverreviews8496
      @oliverreviews8496 4 года назад

      а след лвл использовать nod'у))0

  • @pavelmozil6007
    @pavelmozil6007 4 года назад +7

    Не пойму,зачем ты в методе closeMenu() создал бесполезнуюю переменную menu,которая не используется ?

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

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

  • @artomka8632
    @artomka8632 3 года назад

    я всё ссделал у меня всё правильно работает как я хотел!!!!))))) спасибо

  • @LSMacox
    @LSMacox 5 лет назад

    Не знаю как у него получилось сделать без ошибок. Но вот одного я не понимаю document.getElementById("nav").onmouseover = function(event){
    var target = event.target;
    if( target.className == 'menu-item' ){
    var m = document.getElementsByClassName("menu-item");
    var s = document.getElementsByClassName("submenu");
    closeMenu();
    s[0].style.display = "block"; //Здесь если будет так, то он будет первый элемент открывать. А если так: "for ( var i = 0; i < m.length; i++){ if (m[i] == target) { s[i].style.display = "block"; }", то куда на вел там и открывает. Как в видео.
    }
    }
    }
    document.onmouseover = function(event){
    var target = event.target;
    console.log(event.target);
    if( target.className != 'menu-item' && target.className != 'submenu'){
    closeMenu();
    }
    }
    function closeMenu(){
    var subm = document.getElementsByClassName("submenu");
    for( var i = 0; i < subm.length; i++){
    subm[i].style.display = "none";
    }
    }

  • @user-fr9oc4rh7y
    @user-fr9oc4rh7y 7 лет назад

    Зачем устанавливать блокам меню position ?

  • @catshannon5064
    @catshannon5064 7 лет назад

    Здравствуйте! У меня тут два вопроса: Зачем в первой функции вызываем closeMenu();
    И как решить проблему Uncaught TypeError: Cannot set property 'onmouseover' of null

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +1

      Что б была возможность закрыть меню.
      Решить проблему очень просто - правильно переписать код!

    • @durd6856
      @durd6856 7 лет назад

      Web Developer Blog Здравствуйте, не до конца понял строчку: var target = event.target - для чего она нужна? Изучаю практику и теорию параллельно, чтобы запомнить так сказать..

    • @durd6856
      @durd6856 7 лет назад

      Web Developer Blog Разобрался с этим вопрос снят

    • @thekuzyafast8510
      @thekuzyafast8510 6 лет назад

      А если он в жопу правильно переписан и всё равно сук ни*уя не работает, что дальше?

    • @thekuzyafast8510
      @thekuzyafast8510 6 лет назад

      Уже работает, извини, но это просто не может быть ошибкой, проблема была даже не в js файле...

  • @arhim7650
    @arhim7650 3 года назад

    Я конечно понимаю, что это практика по Js, но блин, два закрывающихся Дива в ряд, этож не читабельно нефига. уже представляю, как подобное будет выглядеть в каком нить длинном лендинге, когда тебе надо будет вынести кусок кода, за пределы одного из контейнеров. Аж мурашки по спине пошли.

    • @SuprunAlexey
      @SuprunAlexey  3 года назад

      Ужас

    • @SuprunAlexey
      @SuprunAlexey  3 года назад

      Казнить 😇

    • @arhim7650
      @arhim7650 3 года назад

      @@SuprunAlexey это как читать код, в котором все закидано this'ами. Воде коротко, вроде все даже хорошо работает, но что там происходит, даже разработчик на следующий день не скажет.

  • @user-mg7gu1bk1j
    @user-mg7gu1bk1j 6 лет назад

    как это в ссылки сделать там код придёться как то менять помогите!!!!

  • @nikgus4862
    @nikgus4862 3 года назад

    Впервые с первого раза!

  • @panmazurokbunpalolecsandr178
    @panmazurokbunpalolecsandr178 4 года назад +17

    У меня у одного оно вообще не работает? Я даже его даа раза переписал и проверил но код все равно не работает
    Но все же спасибо за урок

    • @edkar4629
      @edkar4629 4 года назад

      Тож самое

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

      а ты случайно не забыл подключить js файл в Html коде?

    • @natkasazonowa227
      @natkasazonowa227 3 года назад

      Тоже не работает,js к html подключила,проверила два раза все без толку😥

    • @artomka8632
      @artomka8632 3 года назад

      Вы наверное js фаил к HTML НЕ подключили

    • @dis.3225
      @dis.3225 3 года назад

      @@artomka8632 все подключено, код перепроверила, но что-то не работает(

  • @badex6056
    @badex6056 3 года назад

    Если такой простой список, то куда проще просто использовать css и псевдокласс Hover.

  • @yaroslav.grigoryev
    @yaroslav.grigoryev 7 лет назад +5

    Спасибо за урок! В function closeMenu() для чего переменная menu? Лишняя строка в коде...

  • @user-zq1if3uv8i
    @user-zq1if3uv8i 6 лет назад +1

    Ладошка с пальцем:D

  • @elvindesign6350
    @elvindesign6350 5 лет назад +1

    Есть теги nav ul li a почему бы не использовать их?)

    • @thegame8589
      @thegame8589 3 года назад

      відео 2016 року)І перемінна let замість var теж частіше використвується)

  • @nikbu5811
    @nikbu5811 3 года назад +1

    Что значит строчка кода for (var i =0; i

    • @kurrama7831
      @kurrama7831 3 года назад

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

  • @CruiseJobUA
    @CruiseJobUA 7 лет назад +22

    Когда создаешь переменные, давай им читабельный имена, а не просто "s".

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +3

      Вроде не особо грешил таким

    • @CruiseJobUA
      @CruiseJobUA 7 лет назад +5

      Смысл в том что бы писать читабельный код, а не просто написать код который будет работать. Показывай правильный пример, другие буду учиться от тебя. Я даже на самом начальном уровне, и то понимаю что переменную надо называть относительно того что она определяет. Рассмотри мое предложение.

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +3

      Конечно - конечно

    • @debasher
      @debasher 5 лет назад +1

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

  • @user-fs4se7uf8c
    @user-fs4se7uf8c 5 лет назад

    У меня одного при обновлении, блоки submenu отображаются и после ввода курсора мыши на экран изчезают и далее все работает как надо??
    Я добавил :
    window.onload= function(){
    Var s = document.getElementsByClassName('submenu');
    for( var i=0; i

    • @TORREScs
      @TORREScs 5 лет назад

      у всех) но тебе одному не похрен)))) и мне)

    • @TORREScs
      @TORREScs 5 лет назад

      и кстати чтобы от этого избавиться достаточно в начале кода прописать closeMenu()

  • @user-zz2lj5nr7n
    @user-zz2lj5nr7n 3 года назад

    код выравнивается в DOM ctrl a + crtl +k+f

  • @vladgolodok3705
    @vladgolodok3705 5 лет назад

    не понял строку кода s[0].style.display='block'. Что такое 'block' и для чего s[0]?

  • @Streetap
    @Streetap 7 лет назад

    Давайте напишем пятнашки на javvascript!

  • @user-cl1gh4ho5b
    @user-cl1gh4ho5b 6 лет назад +14

    Ну вообще норм, но только тебе надо больше говорить что ты пишешь

    • @user-cl1gh4ho5b
      @user-cl1gh4ho5b 6 лет назад

      минус в том когда забираешь курсор я меню другой класс пропадает
      второй минус что это можнj делать даже лучше на чистом css

    • @aveomathman5532
      @aveomathman5532 6 лет назад +2

      Да, можно. Я сам так раньше делала, только так много css кода получается, а смысл этого видео-урока в обучение основ js. И он в начале сказал же, что это не идеальный пример

  • @ivankolesnyk155
    @ivankolesnyk155 7 лет назад

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

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +1

      Перепишете все верно, где то могли ошибиться

    • @user-xp1uz3xz4t
      @user-xp1uz3xz4t 7 лет назад

      У меня та же ситуация. Вы нашли в чем проблема?

    • @ivankolesnyk155
      @ivankolesnyk155 7 лет назад

      не нашол((

    • @user-kq2tk1oy3c
      @user-kq2tk1oy3c 7 лет назад +2

      я знаю ребята как вам помочь тут дело в css .menu-item .submenu{display:none;} допишите

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

    Реализовал на Jquery, работает точно так же, кто может подскажите, что можно убрать или добавить ;)
    $('.menu-item').mouseover(function(event){
    let target = event.target;
    let s = target.getElementsByClassName('submenu');
    closeBlock();
    $(s).show();
    });
    $(document).mouseover(function(event){
    let target = event.target;
    if (target.className == 'menu-item' || target.className == 'submenu') {
    $(target).show();
    }
    });
    function closeBlock(){
    $('.menu-item').mouseout(function(){
    $('.submenu').hide();
    });
    }

  • @ulbolsynzh
    @ulbolsynzh 3 года назад

    как вы одновременно пишете на нескольких строках?

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

      Выбираешь строки с зажатым Alt

  • @user-cl1gh4ho5b
    @user-cl1gh4ho5b 6 лет назад

    Нет, это самый непростой способ. Просто сделать на css!!! Сделать список, поставить его в строчку, потом написать стили, немного html в начали и всё...

    • @SuprunAlexey
      @SuprunAlexey  6 лет назад +3

      Это практика JavaScript что бы научится использовать Js

  • @joaquinbastos3489
    @joaquinbastos3489 4 года назад +4

    Очень интересно но ничего не понятно)

  • @KUBEx-td4ix
    @KUBEx-td4ix Год назад

    Нуууууу, ладно как для понимания сойдет, но не все так тут гладко. Рекомендую найти другой ролик. Зашел, посмотреть как раз что сделаю за 10минут видео. Класть на css, но к js вопросики

  • @armenmanadaryan2492
    @armenmanadaryan2492 4 года назад

    Uncaught TypeError: Cannot set property 'onmouseover' of null
    at main.js:1

    • @SuprunAlexey
      @SuprunAlexey  4 года назад

      Посмотрите код у меня

    • @oleksandrkostyuk9696
      @oleksandrkostyuk9696 4 года назад

      та же проблема, проверил уже каждую букву кода пару раз, все сходиться но ошыбку выдает(((

    • @artemgavryushin4693
      @artemgavryushin4693 4 года назад +1

      @@oleksandrkostyuk9696 забей! у меня также (по коду все верно)

    • @neokanal
      @neokanal 4 года назад

      @@artemgavryushin4693 понял в чем беда? у меня так же

  • @youxxxgun9001
    @youxxxgun9001 5 лет назад +2

    Почему браузер ругается на "onmouseover"?

    • @user-fk3cu6eg6q
      @user-fk3cu6eg6q 5 лет назад +1

      И у меня, объясните почему

  • @user-sf3sw7qr7k
    @user-sf3sw7qr7k 7 лет назад

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

    • @aibeksydygaliev7335
      @aibeksydygaliev7335 7 лет назад

      Держи. Первые 4 урока
      drive.google.com/open?id=0B5Uq7Wct5YVBNFRaWm9ySEdQc0k

  • @s12jnr1jnasd
    @s12jnr1jnasd 6 лет назад +1

    emmet рулит .nav>.item-menu*4>.submenu

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

    Не работает почему то 😢 Уже который урок подряд не работает!!!

  • @alexandrbutsaiev7249
    @alexandrbutsaiev7249 5 лет назад +1

    Доработанный мною код! Реагирует на клик!
    document.getElementById('nav').onclick = function(event) {
    var s = event.target.getElementsByClassName('submenu');
    var target = event.target;
    if (s[0].classList == 'submenu active'){
    s[0].classList.remove('active');
    }
    else if (target.className == 'menu-item') {
    closeMenu();
    s[0].classList.add('active');
    console.log(target.className)
    }
    };
    document.onclick = function(event){
    var target = event.target;
    if(target.className != 'menu-item' && target.className != 'submenu active'){
    closeMenu();
    }
    };
    function closeMenu(){
    var subm = document.getElementsByClassName('submenu');
    for(var i = 0; i < subm.length; i++){
    subm[i].classList.remove('active');
    }
    }

  • @zento4172
    @zento4172 4 года назад

    Почему у меня "TARGET" не светится

  • @Tokamame
    @Tokamame 7 лет назад +1

    Дебажить код alert-ами)) Начинающий программист, вы имели ввиду? Самому-то не надоедает эти окошки мышкой закрывать? Познакомили бы уже с console.log.

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +2

      Новичкам так проще, они сразу видят действие, до консоли позже доходит)

  • @user-cg4pk1hv7y
    @user-cg4pk1hv7y 5 лет назад +1

    div, div,div....ссылка-див, список -див все див

  • @hewston2733
    @hewston2733 7 лет назад

    как ты продублировал строку 3 раза?

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад

      Sublime text творит чудеса

    • @biLLie_wiLLie
      @biLLie_wiLLie 7 лет назад +1

      Установи Emmet для Sublime Text и посмотри урок о нем. На RUclips много о нем сказано.

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

    Замени "onmouseover" на "onclick"

  • @user-ct3bf8qk2q
    @user-ct3bf8qk2q 6 лет назад +8

    Бля, легче на чистом CSS написать.

    • @RollbackToStart
      @RollbackToStart 5 лет назад +1

      Вы правы, однако и это знать тоже нужно, не всё же Вы будете писать на чистом HTML + CSS.

    • @xOceanSpirit
      @xOceanSpirit 4 года назад +3

      @@RollbackToStart подобную хрень лучше и не знать. Одноуровневое меню, открывающее при ховере очень легко реализуется без скрипта. Это дичь делать такую анимацию при помощи JS.

  • @PacoOfficial
    @PacoOfficial 7 лет назад +1

    качество кода оставляет желать лучшего)) где то стоят ' ' одинарные, где то " ' двойные, знак = так же где то с пробелами, где то без.. вообще рандомно, просто ппц чувак, ну да ладно, главное показал как работает и то хорошо))

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +1

      Идеалу нет предела

    • @aibeksydygaliev7335
      @aibeksydygaliev7335 7 лет назад +1

      Главное код работает!
      Ну а двойные или одинарные кавычки - это можно самому регулировать!
      Молодец парень - там держать!

    • @noraunt5548
      @noraunt5548 7 лет назад +2

      Paco, ты вообще вездесущ, и в тематических группах ВК тебя постоянно вижу и под видосами.

  • @niamchannel8520
    @niamchannel8520 3 года назад

    Всем привет, данный код я написал на локальном сервере в Sublime Text 3 ничего не работает, но когда поместил в JSFiddle( jsfiddle.net/8oLg63bm/ ) всё заработало
    Вопрос ПОЧЕМУ?

  • @elmaga4486
    @elmaga4486 4 года назад

    могу подсказать как бесплатно скачать phpstorm, webstorm)

    • @SuprunAlexey
      @SuprunAlexey  4 года назад

      Со студенческим

    • @elmaga4486
      @elmaga4486 4 года назад

      @@SuprunAlexey неа

    • @SuprunAlexey
      @SuprunAlexey  4 года назад

      Легальным способом?

    • @elmaga4486
      @elmaga4486 4 года назад

      @@SuprunAlexey к сожалению пиратский(новый версии без вирусов и т.д.). Ну я очень доволен. Правда немного заморачиваться надо когда устанавливаеш ну могу помочь если будут вопросы/проблемы

  • @key3684
    @key3684 6 лет назад

    Что за прога?

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

    помимо того что вы не объяснили что к чему еще и ошибки во всю жаль что таким как мы приходится натыкаться на таких как вы и впустую тратить время ,,,,,,,,,,

    • @SuprunAlexey
      @SuprunAlexey  4 года назад

      Нет ошибок

    • @alexandrgusletsov2567
      @alexandrgusletsov2567 4 года назад

      @@SuprunAlexey , здравствуйте ! Интересно у вас учится! Но вот первый раз применил что то на практике и не получается! Подскажите как найти ошибку! вот страница моя :
      Делаю появляющиеся значки иконок под моделями обуви!
      Alexandrgentlmen.github.io

    • @alexandrgusletsov2567
      @alexandrgusletsov2567 4 года назад

      @@SuprunAlexey , еще не понятно почему в моем примере сразу же начинает при любом движении срабатывать код добавления display:none ! хотя я даже до блока с id еще не направил мышь

  • @ShooterStar
    @ShooterStar 6 лет назад +7

    сейчас бы меню из дивов делать.....

    • @mirommefumimasa33
      @mirommefumimasa33 4 года назад

      чувак 2016 год,тогда это было нормально

    • @jeb_7749
      @jeb_7749 4 года назад

      @@mirommefumimasa33, конечно. JS только в 2015 появился!

  • @darikaki647
    @darikaki647 4 года назад

    сейчас можно в ксс3 забабахать это меню

    • @SuprunAlexey
      @SuprunAlexey  4 года назад

      да и тогда можно было, суть же в самом процессе

  • @user-yb9uf8uz8k
    @user-yb9uf8uz8k 3 года назад

    Такие вещи лучше на css писать

  • @yevhentarik4551
    @yevhentarik4551 5 лет назад

    Почему у меня не работает ничего ?

    • @SuprunAlexey
      @SuprunAlexey  5 лет назад +2

      Потому что неправильно написал

    • @FA-tu5ti
      @FA-tu5ti 2 года назад

      @@SuprunAlexey Всё правильно!

  • @user-hy4tp3rj6z
    @user-hy4tp3rj6z 6 лет назад +2

    Реклама каждые 2 минуты задалбывает !!! Х_Х
    невозможно смотреть видео, и так в каждом видео =/

    • @SuprunAlexey
      @SuprunAlexey  6 лет назад

      А вы ее закрывайте и не парьтесь

    • @user-hy4tp3rj6z
      @user-hy4tp3rj6z 6 лет назад

      так вот и напрягает каждые 2 минуты закрывать! то всплывающие, то реклама включается

    • @xqz666
      @xqz666 6 лет назад +1

      addd block поставь

    • @user-ut7dh6iq1l
      @user-ut7dh6iq1l 6 лет назад

      Антон М, а ты клавиатуру новую купи, либо английский язык изучи

    • @maxbelka4883
      @maxbelka4883 4 года назад

      А какие к автору претензии? Ютуб делает рекламу, не автор

  • @mishapython2241
    @mishapython2241 6 лет назад

    Что за редактор?

  • @s12jnr1jnasd
    @s12jnr1jnasd 6 лет назад

    Но JS не пашет
    -----------------------------------------------------------------------------JS-------------------------------------------------------------------------------------------------------------------------
    document.getElementById('nav').onmouseover = function(event){
    var target = event.target;
    if(target.ClassName == 'menu-item'){
    var s = target.getElementsByClassName('submenu');
    closeMenu();
    s[0].style.display='block';
    }
    }
    document.getElementById('nav').onmouseover = function(event){
    var target = event.target;
    console.log(event.target);
    if(target.ClassName !== 'menu-item' && target.className!='submenu'){
    closeMenu();
    }
    }
    function closeMenu(){
    var menu = document.getElementById('nav');
    var subm = document.getElementsByClassName('submenu');
    for(var i =0;i

    • @vladvlad6339
      @vladvlad6339 6 лет назад

      ClassName с маленькой надо)

  • @leontiimicsanschi6153
    @leontiimicsanschi6153 3 года назад

    ES6? Не, не слышал.

  • @yamahabiker316
    @yamahabiker316 5 лет назад

    Бл* спасибо, конечно, за урок, НО РЕКЛАМЫ ТО КУЛИ ТАК МНОГО НАПИХАЛ??))

  • @apexnuts9785
    @apexnuts9785 3 года назад

    что это за ошибка ? yadi.sk/i/LM6l534t2iDy8w

    • @apexnuts9785
      @apexnuts9785 3 года назад

      Я пробовал убирать кавычки, не фурычит

    • @SuprunAlexey
      @SuprunAlexey  3 года назад

      У меня не открывает Яндекс, на телефоне нет впн, позже гляну. Почитайте коменты, тут многие ошибки описаны

  • @konstantyn3980
    @konstantyn3980 27 дней назад

    ниче не понятно

  • @belokopitov
    @belokopitov 5 лет назад

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

  • @wickedtorpedo75
    @wickedtorpedo75 4 года назад +1

    Скачал код с какого то форума и тупо перезаписал на камеру и называешь это видеуроком 😲😲😲

  • @m.s.5610
    @m.s.5610 Год назад

    Народ, кто "по-глазастее", в чём разница(первый скрипт не работает, а второй работает).
    1. document.getElementById('nav').onmouseover = function(event) {
    var target = event.target;
    if (target.className == 'menu-item') {
    var s = target.getElementsByClassName('summenu');
    closeMenu();
    s[0].style.display='block';
    }
    }
    document.onmouseover = function(event) {
    var target = event.target;
    console.log(event.target);
    if (target.className != 'menu-item' && target.className != 'summenu') {
    closeMenu();
    }
    }
    function closeMenu() {
    var menu = document.getElementById('nav');
    var subm = document.getElementsByClassName('summenu');
    for (var i = 0; i < subm.length; i++) {
    subm[i].style.display="none";
    }
    }
    2. document.getElementById('nav').onmouseover = function(event) {
    var target = event.target;
    if (target.className == 'menu-item') {
    var s = target.getElementsByClassName('submenu');
    closeMenu();
    s[0].style.display = 'block';
    }
    }
    document.onmouseover = function(event) {
    var target = event.target;
    console.log(event.target);
    if (target.className != 'menu-item' && target.className != 'submenu') {
    closeMenu();
    }
    }
    function closeMenu() {
    var menu = document.getElementById('nav');
    var subm = document.getElementsByClassName('submenu');
    for (var i = 0; i < subm.length; i++) {
    subm[i].style.display = "none";
    }
    }

  • @Ivan-rc4it
    @Ivan-rc4it 5 лет назад

    Зачем в .submenu писать свойство cursor: pointer, если оно и так наследуется от родительского элемента?

  • @CruiseJobUA
    @CruiseJobUA 7 лет назад

    Почему сласс .munu-item добавлен впереди .submenu ?.

    • @SuprunAlexey
      @SuprunAlexey  7 лет назад +1

      Потому что submenu идет после menu item, вы когда наводите на menu item у вас появляется submenu.