Problem changing slides in the result window. (Interactive Website: Flipboard)


#1

So, i have a wierd problem with (testing the code) changing sldies in the result window.

When I am done with writing the code I want to test it, but i get a red text displayed under the result window that says: > Object doesn't support property or method 'fadeIn'.

I am way past that lesson and i can still move on with my course, but I am curious about what might be the error here, maybe someone of you know.

Thanks!


#2

@markus.k,
Please display the full code you are using....

++ the build of FLIPBOARD script ++

The structure of the =main= function should look like

var main = function() {
     //Begin of =main= FUNCTION-BODY
        $('.dropdown-toggle').click(function(){
              $('.dropdown-menu').toggle();
        });

        $('.arrow-next').click( function() {
             //code which gets executed when =click=ed
        });
        $('.arrow-prev').click( function() {
             //code which gets executed when =click=ed
        });
     //End of =main= FUNCTION-BODY
};

And the =main= function should be executed when the document is fully loaded and READY

$(document).ready( main );

==============================

+++++ flipboard click Eventhandler structure
Within the =main= function

var main = function() {
     //Begin of =main= FUNCTION-BODY
       //your code
     //End of =main= FUNCTION-BODY
};
$(document).ready( main );

you are placing =click= Eventhandlers,
which are attached to specific HTML-Elements by using
a jQuery-Selector.like $('.arrow-prev')

var main = function() {
     //Begin of =main= FUNCTION-BODY
        $('.arrow-prev').click();
     //End of =main= FUNCTION-BODY
};
$(document).ready( main );

Now as a so-called argument of the =click= Eventhandler
you are placing a so-called anonymous function

var main = function() {
     //Begin of =main= FUNCTION-BODY
        $('.arrow-prev').click( function() {
             //code which gets executed when =click=ed
        });
     //End of =main= FUNCTION-BODY
};
$(document).ready( main );

======================================

+++++ flipboard the next && prev steps
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


#3

Here is the full code:

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 == 0) {
        $('.slide').first();
    }

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

}

$(document).ready(main)


#4

And it's wierd, because now, that i have finishde the $('.prev-slide').click(function() { bit, i am able to switch to the previous slide, but i get the error message when i want to switch to the next slide.

I have no idea why it's so, because when i switch to the previous slide, in that bit of code there is property/method fadeIn() as well.


#5

@markus.k,
You will have to use the next() method
like

    var nextSlide = currentSlide.next();

AND
you will have to test if the jQuery-Selection-Object is EMPTY by checking on the length property
like

( nextSlide.length === 0)

and if the nextSlide.length is zero
you will have to redfine the nextSlide variable
like

nextSlide= $('.slide').first();