Saji
Saji

Reputation: 165

Calling same function twice - JavaScript

I'm facing a problem for using same JavaScript code twice. Both slider conflicting and doesn't work properly. I want to know why this doesn't work. When I use only one slider it work properly. Here is the JavaScript code:

sliderInt = 1;
sliderNext = 2;

$(document).ready(function() {
  $('#slider > img#1').fadeIn(150);
  startSlider();
})

function startSlider() {

  var count = $('#slider > img').size();

  var loop = setInterval(function() {

    if (sliderNext > count) {
      sliderInt = 1;
      sliderNext = 1;
    }

    $('#slider > img').fadeOut(150);
    $('#slider > img#' + sliderNext).fadeIn(150);

    sliderInt = sliderNext;
    sliderNext = sliderNext + 1;
  }, 3000);

}

function prev() {
  newSlide = sliderInt - 1;
  showSlide(newSlide);
}

function next() {
  newSlide = sliderInt + 1;
  showSlide(newSlide);
}

function stopLoop() {
  window.clearInterval(loop);
}

function showSlide(id) {

  stopLoop();

  if (id > count) {
    id = 1;
  } else if (id < 1) {
    id = count;
  }

  $('#slider > img').fadeOut(150);
  $('#slider > img#' + id).fadeIn(150);

  sliderInt = id;
  sliderNext = id + 1;

  startSlider();

}

$('#slider > img').hover(

  function() {
    stopLoop();
  },
  function() {
    startSlider();
  }

  // In the End of the line don't put comma ','

);

sliderInt = 1;
sliderNext = 2;

$(document).ready(function() {
  $('#pslider > img#1').fadeIn(150);
  startSlider();
})

function startSlider() {

  var count = $('#pslider > img').size();

  var loop = setInterval(function() {

    if (sliderNext > count) {
      sliderInt = 1;
      sliderNext = 1;
    }

    $('#pslider > img').fadeOut(150);
    $('#pslider > img#' + sliderNext).fadeIn(150);

    sliderInt = sliderNext;
    sliderNext = sliderNext + 1;
  }, 3000);

}

function fprev() {
  newSlide = sliderInt - 1;
  showSlide(newSlide);
}

function fnext() {
  newSlide = sliderInt + 1;
  showSlide(newSlide);
}

function stopLoop() {
  window.clearInterval(loop);
}

function showSlide(id) {

  stopLoop();

  if (id > count) {
    id = 1;
  } else if (id < 1) {
    id = count;
  }

  $('#pslider > img').fadeOut(150);
  $('#pslider > img#' + id).fadeIn(150);

  sliderInt = id;
  sliderNext = id + 1;

  startSlider();

}

$('#pslider > img').hover(

    function() {
      stopLoop();
    },
    function() {
      startSlider();
    }

    //In the End of the line don 't put comma ', '

 );
<div class="primary_slider">
  <div id="slider">
    <img id="1" src="images/slider_images/image1.jpg" alt="">
    <img id="2" src="images/slider_images/image2.jpg" alt="">
    <img id="3" src="images/slider_images/image3.jpg" alt="">
  </div>
  <a class="prev" href="#" onclick="prev(); return false;"></a>
  <a class="next" href="#" onclick="next(); return false;"></a>
</div>

<div class="footer_slider">
  <div id="pslider">
    <img id="1" src="images/pslider/para_img1.jpg">
    <img id="2" src="images/pslider/para_img.png">
    <img id="3" src="images/pslider/para_img2.jpg">
  </div>
  <a class="fprev" href="#" onclick="fprev(); return false">
    <</a>
      <a class="fnext" href="#" onclick="fnext(); return false">></a>
</div>

Upvotes: 1

Views: 2059

Answers (2)

Kalmani
Kalmani

Reputation: 51

your function StartSlider is based on the dom element with id "#slider", you should pass the id of your slider as an argument to your function

function startSlider(id) {
  var count = $('#" + id + "> img').size(),
      loop = setInterval(function() {
        if (sliderNext > count) {
          sliderInt = 1;
          sliderNext = 1;
        }

        $('#" + id + "> img').fadeOut(150);
        $('#" + id + "> img#' + sliderNext).fadeIn(150);

        sliderInt = sliderNext;
        sliderNext = sliderNext + 1;
      }, 3000);
}

And call it as

startSlider('pslider');

for example

Upvotes: 0

Oleh Leskiv
Oleh Leskiv

Reputation: 391

You have troubles with id of your sliders. http://www.w3schools.com/tags/att_global_id.asp

You can try to use classes

<div class="primary_slider">
  <div class="slider">
    <img id="1" src="images/slider_images/image1.jpg" alt="">
    <img id="2" src="images/slider_images/image2.jpg" alt="">
    <img id="3" src="images/slider_images/image3.jpg" alt="">
  </div>
  <a class="prev" href="#" onclick="prev(); return false;"><</a>
  <a class="next" href="#" onclick="next(); return false;">></a>
</div>

<div class="footer_slider">
  <div class="slider">
    <img id="4" src="images/pslider/para_img1.jpg">
    <img id="5" src="images/pslider/para_img.png">
    <img id="6" src="images/pslider/para_img2.jpg">
  </div>
  <a class="prev" href="#" onclick="prev(); return false">
    <</a>
      <a class="next" href="#" onclick="next(); return false">></a>
</div>

sliderInt = 1;
sliderNext = 2;

$(document).ready(function() {
  $('#slider > img#1').fadeIn(150);
  startSlider();
})

function startSlider() {

  var count = $('.slider > img').size();

  var loop = setInterval(function() {

    if (sliderNext > count) {
      sliderInt = 1;
      sliderNext = 1;
    }

    $('.slider > img').fadeOut(150);
    $('.slider > img#' + sliderNext).fadeIn(150);

    sliderInt = sliderNext;
    sliderNext = sliderNext + 1;
  }, 3000);

}

function prev() {
  newSlide = sliderInt - 1;
  showSlide(newSlide);
}

function next() {
  newSlide = sliderInt + 1;
  showSlide(newSlide);
}

Upvotes: 1

Related Questions