• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego mój kod javascript nie działa?

Object Storage Arubacloud
0 głosów
1,806 wizyt
pytanie zadane 22 lipca 2017 w JavaScript przez The Real Slim Stefan Początkujący (450 p.)
zmienione kategorie 22 lipca 2017 przez ScriptyChris

Witam mam taki skrypt: 

// Animacja górnego menu oraz animacje po przewinięciu 

var lastId,
    topMenu = $("#ul_nawigacja"),
    topMenuHeight = topMenu.outerHeight()+15,
    // Wszystkie elementy listy
    menuItems = topMenu.find("a"),
    // Kotwice do pozycji menu
    scrollItems = menuItems.map(function(){
      var item = $($(this).attr("href"));
      if (item.length) { return item; }
    });

// Animacje po kliknięciu w pozycję menu
menuItems.click(function(e){
  var href = $(this).attr("href"),
      offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
  $('html, body').stop().animate({ 
      scrollTop: offsetTop
  }, 1000);
  e.preventDefault();
});

// Po przewinięciu
$(window).scroll(function(){
   // Pobierz pozycje kontenera 
   var fromTop = $(this).scrollTop()+topMenuHeight;
   
   // Pobierz identyfikator aktualnej pozycji przewinięcia
   var cur = scrollItems.map(function(){
     if ($(this).offset().top < fromTop)
       return this;
   });
   // Pobierz identyfikator aktualnego elementu
   cur = cur[cur.length-1];
   var id = cur && cur.length ? cur[0].id : "";
   
   if (lastId !== id) {
       lastId = id;
       // Ustaw lub usun "active" - odpowiada za podświetlenie pozycji w menu
       menuItems
         .parent().removeClass("active")
         .end().filter("[href=#"+id+"]").parent().addClass("active");
   }                   
});

Dodam że skrypt wcześniej działał teraz gdy włączam zbadaj w google wywala błąd Uncaught Error: Syntax error, unrecognized expression i działa tylko płynne przewijanie a cały skrypt ma płynnie przewijać i zmieniać zakładki w nawigacji. Skrypt ten jest z kursu i tam była w tym kursie podpięta biblioteka jQuery 2.0.3 oczywiście z ta biblioteką skrypt dalej nie działa z nowszą biblioteką jest tak samo, pomocy. 

komentarz 22 lipca 2017 przez CzikaCarry Szeryf (75,340 p.)
A na której linicje występuje ten błąd można wiedzieć?
komentarz 22 lipca 2017 przez The Real Slim Stefan Początkujący (450 p.)
Wyskakuje takie coś jak mam sprawdzić która to linijka to powiem.

Uncaught Error: Syntax error, unrecognized expression: [href=#]
    at Function.ga.error (jquery-3.2.1.min.js:2)
    at ga.tokenize (jquery-3.2.1.min.js:2)
    at ga.compile (jquery-3.2.1.min.js:2)
    at ga.select (jquery-3.2.1.min.js:2)
    at ga (jquery-3.2.1.min.js:2)
    at Function.ga.matches (jquery-3.2.1.min.js:2)
    at Function.r.filter (jquery-3.2.1.min.js:2)
    at E (jquery-3.2.1.min.js:2)
    at r.fn.init.filter (jquery-3.2.1.min.js:2)
    at wlasny.js:43
komentarz 22 lipca 2017 przez ScriptyChris Mędrzec (190,190 p.)

Linijka 43:

.end().filter("[href=#"+id+"]").parent().addClass("active");

znak # powinien być w cudzysłowiu, gdyż jest to string:

.end().filter('[href="#"' + id + ']').parent().addClass("active");

Metoda filter w jQuery przyjmuje selektor CSS, który przekazałeś w źle sformowanym stringu.

 

komentarz 23 lipca 2017 przez The Real Slim Stefan Początkujący (450 p.)
Skopiowałem i cały czas błąd wyskakuje w tej samej linijce kodu co robić?
komentarz 23 lipca 2017 przez obl Maniak (51,280 p.)
.end().filter("[href=\"#" + id +"\"]").parent().addClass("active");

Tak powinno zadziałać

 

komentarz 23 lipca 2017 przez The Real Slim Stefan Początkujący (450 p.)
Działa tylko jeszcze jest taki problem że jak klikne w zakładkę na pasku menu to ten pasek zostaje podświetlony i to bardzo dobrze tylko jak przejadę już samym scrollem z tej pozycji to klasa zostaje na tym co kliknąłem wcześniej i dodaje się na nowej pozycji, jak zmodernizować mój kod żeby klasa usuwała się też po scrollowaniu kółkiem myszy jeśli wcześniej klikne w zakładkę a nie przeskrolluje??

1 odpowiedź

0 głosów
odpowiedź 23 lipca 2017 przez X3h Dyskutant (9,540 p.)

Podobne pytania

–2 głosów
1 odpowiedź 211 wizyt
pytanie zadane 28 sierpnia 2017 w JavaScript przez Vorex444 Dyskutant (9,610 p.)
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 4 sierpnia 2017 w JavaScript przez turtelian Obywatel (1,760 p.)
0 głosów
1 odpowiedź 264 wizyt

92,584 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,967 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...