Please help - Previous slide 2


#1

https://www.codecademy.com/courses/web-beginner-en-seyrq/0/9?content_from=make-an-interactive-website%3Ajquery-effects#

I keep getting the following error: Oops, try again. Remember to fade out the current slide and remove the 'active-slide' class. I can't seem to find the problem in my code, I have checked for other answers to this topic and still nothing. Please help me.

var main = function() {

    $('.dropdown-toggle').click(function(){
        $('.dropdown-menu').toggle();
   
    });

    
    $('.arrow-next').click(function() {
        var currentSlide = $('.active-slide');
        var nextSlide = currentSlide.next();

        var currentDot = $('.active-dot');
        var nextDot = currentDot.next();

        if(nextSlide.length == 0) {
        nextSlide = $('.slide').first();
        nextDot = $(''.dot').first();
        }
        
    $('.arrow-prev').click(function() {
  var currentSlide = $('.active-slide');
  var prevSlide = currentSlide.prev();

  if(prevSlide.length == 0) {
    prevSlide = $('.slide').last();
  }

  currentSlide.fadeOut(600).removeClass('active-slide');
  prevSlide.fadeIn(600).addClass('active-slide');
  
});
 

  currentSlide.fadeOut(600).removeClass('active-slide');
  nextSlide.fadeIn(600).addClass('active-slide');
    
        
  currentDot.removeClass('active-dot');
  nextDot.addClass('active-dot');
  
    
    });
    
}

$(document).ready(main);

#2

Hi @takitotakito2727,

nextDot = $(''.dot').first();

Can you spot the problem there?

Hint (click to view)

You have two single quotes (') at the beginning. Remove one of them, and your code should work :slight_smile:


#3

@takitotakito2727
Apart from your problem mentioned by @zystvan

You will have to keep a strict order in your code.....

s t e p s - - f o r - - n e x t S l i d e
-1
-1a create a selection of nextSlide (2 steps, capture 'active-slide, capture next() slide )'
-1b create a selection of nextDot
-2 check if selection of nextSlide is EMPTY
-2a if EMPTY change nextSlide selection to first slide
-2b and change nextDot selection to first Dot
-3 swap -active-slide- and -active-dot- class from current to next
Step3 is done by

   currentSlide.fadeOut(600).removeClass('active-slide');
   nextSlide.fadeIn(600).addClass('active-slide');
   currentDot.removeClass('active-dot');
   nextDot.addClass('active-dot');

s t e p s - - f o r - - p r e v S l i d e
-1
-1a create a selection of prevSlide
-1b create a selection of prevDot
-2 check if selection of prevSlide is EMPTY
-2a if EMPTY change prevSlide selection to last slide
-2b and change prevDot selection to last Dot
-3 swap -active-slide- and -active-dot- class from current to prev
Step3 is done by

    currentSlide.fadeOut(600).removeClass('active-slide');
    prevSlide.fadeIn(600).addClass('active-slide');
    currentDot.removeClass('active-dot');
    prevDot.addClass('active-dot');

+++++++++++++++++++++++++++++++++++++
++ jquery length explained AND DOM pictures of flipboard
https://www.codecademy.com/forum_questions/5615308ab62548021c0000e4


#4

Thanks a lot for this explanation! This will be useful for other tasks as well.


#5

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.