Cant go past Next dot 2. Help find me error?


#1

Used this code, but there is some error i can't find.

var main = function () {
$(".dropdown-toggle").click(function(){
$(".dropdown-menu").toggle();
});
$('.arrow-next').click(function(){
var currentSlide = $('.active-slide');
var nextslide= currentSlide.next();
if (nextslide.length==0){
nextdot= $('.dot').first();
nextslide= $('.slide').first();
};
currentSlide.fadeOut(600).removeClass('active-slide');
nextslide.fadeIn(600).addClass('active-slide');
var currentdot = $('.active-dot');
var nextdot= currentdot.next();
currentdot.removeClass('active-dot');
nextdot.addClass('active-dot');
});
};
$(document).ready(main)


#2

@pysolver82283,
You will have to put the code-lines

var currentdot = $('.active-dot');
var nextdot= currentdot.next();

BEFORE
you test nextslide.length === 0

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

++ 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

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

I found that it works if you separate the if statements, like so:
if(nextSlide.length == 0) {
nextSlide = $('.slide').first();
}
if(nextDot.length == 0) {
nextDot = $('.dot').first();
}


#4

@glowingchaos,

You can also combine them in one IF statement,
because if you find nextSlide.length to be zero
you know that the nextDot.length has to be zero as well
thus

if(nextSlide.length == 0) {
    nextSlide = $('.slide').first();
    nextDot = $('.dot').first();
 }

but the most important
is that you manipulate the class Attributes AFTER the IF-test.......

AND

that in the Javascript code-convention
you write your variable-names in the so-called camel-style like

carFactoryEntranceSecurityMeasures

For the code-convention read
http://javascript.crockford.com/code.html

Reference

google search
== the Book ==
javascript [your question] site:developer.mozilla.org

== discussions / opinions ==
javascript [your question] site:stackoverflow.com

== guidance ==
www.crockford.com
http://javascript.crockford.com/code.html
http://javascript.crockford.com/survey.html
http://stackoverflow.com/questions/9549780/what-does-this-symbol-mean-in-javascript
https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
www.developer.mozilla.org/en-US/docs/Web/JavaScript/Guide
http://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname?rq=1


#5

I understand that it should work that way, but when I input that formula into the code, it didn't function properly. However, when I separated it, it functioned and allowed me to move on to the next step. I was providing a quick solution, because it had frustrated me for two days inputting every part of the formula perfectly and still not working, and so I assumed that others might want immediate help so they wouldn't give up coding completely, and the learning process could be patched together later.