javascript - slider 导航器工作非常缓慢

标签 javascript jquery html css

由于我是 JQuery 的新手,我最近通过创建一个带有导航按钮的简单 slider 来练习它。

整个 slider 工作正常,但导航按钮响应非常缓慢。当我第一次点击它们时,我需要点击它们两次才能让它们响应。控制台上没有错误。除导航按钮响应时间外,一切正常。

提前感谢您的帮助。

var slides = document.getElementsByClassName('slide');
var slider_count = 1;
var offset_value;
start();

function left() {

  slider_count--;
  if (slider_count < 0) {
    slider_count = slides.length - 1;
  }
  offset_value = slides[slider_count].offsetLeft;
  $("#wrapper").animate({
    scrollLeft: offset_value
  }, 1000);

}

function right() {


  if (slider_count >= slides.length) {
    slider_count = 0;
  }
  offset_value = slides[slider_count].offsetLeft;
  $("#wrapper").animate({
    scrollLeft: offset_value
  }, 1000);
  slider_count++;
}

function start() {


  if (slider_count == slides.length) {
    slider_count = 0;
  }

  offset_value = slides[slider_count].offsetLeft;
  slider_count++;
  $("#wrapper").animate({
    scrollLeft: offset_value
  }, 1000);
  setTimeout(start, 3000);
}
html,
body,
body * {
  margin: 0;
  padding: 0;
}

#wrapper {
  height: 300px;
  white-space: nowrap;
  overflow: hidden;
}

.slide {
  display: inline-block;
  width: 100%;
  height: 100%;
}

#slide-option-1 {
  background-color: #808080;
}

#slide-option-2 {
  background-color: green;
}

#slide-option-3 {
  background-color: blue;
}

#main {
  position: relative;
}

.nav {
  position: absolute;
  cursor: pointer;
}

#nav-1 {
  left: 10px;
  top: 45%;
}

#nav-2 {
  right: 10px;
  top: 45%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main">
  <a id="nav-1" onclick="left()" class="nav">Left</a>
  <div id="wrapper">
    <div id="slide-option-1" class="slide"></div>
    <div id="slide-option-2" class="slide"></div>
    <div id="slide-option-3" class="slide"></div>
  </div>
  <a id="nav-2" class="nav" onclick="right()">Right</a>
</div>

最佳答案

0初始化slider_count

var slides = document.getElementsByClassName('slide');
var slider_count = 0;
var offset_value;
start();

function left() {

  slider_count--;
  if (slider_count < 0) {
    slider_count = slides.length - 1;
  }
  offset_value = slides[slider_count].offsetLeft;
  $("#wrapper").animate({
    scrollLeft: offset_value
  }, 1000);

}

function right() {

  slider_count++;
  if (slider_count >= slides.length) {
    slider_count = 0;
  }
  offset_value = slides[slider_count].offsetLeft;
  $("#wrapper").animate({
    scrollLeft: offset_value
  }, 1000);
}

function start() {

  slider_count++;
  if (slider_count >= slides.length) {
    slider_count = 0;
  }

  offset_value = slides[slider_count].offsetLeft;
  $("#wrapper").animate({
    scrollLeft: offset_value
  }, 1000);
  setTimeout(start, 3000);
}
html,
body,
body * {
  margin: 0;
  padding: 0;
}

#wrapper {
  height: 300px;
  white-space: nowrap;
  overflow: hidden;
}

.slide {
  display: inline-block;
  width: 100%;
  height: 100%;
}

#slide-option-1 {
  background-color: #808080;
}

#slide-option-2 {
  background-color: green;
}

#slide-option-3 {
  background-color: blue;
}

#main {
  position: relative;
}

.nav {
  position: absolute;
  cursor: pointer;
}

#nav-1 {
  left: 10px;
  top: 45%;
}

#nav-2 {
  right: 10px;
  top: 45%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="main">
  <a id="nav-1" onclick="left()" class="nav">Left</a>
  <div id="wrapper">
    <div id="slide-option-1" class="slide"></div>
    <div id="slide-option-2" class="slide"></div>
    <div id="slide-option-3" class="slide"></div>
  </div>
  <a id="nav-2" class="nav" onclick="right()">Right</a>
</div>

关于javascript - slider 导航器工作非常缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45627237/

相关文章:

javascript - 具有多种颜色的按钮文本

javascript - 拖放(交换、删除)JavaScript

javascript - 轮播幻灯片改为移动到透明 div 后面

javascript - 如何使用html5 canvas绘制多级饼图?

javascript - jQuery 中仅允许所有语言的字母数字

html - 强制响应图像匹配父元素高度?

html - Div 元素未正确定位

javascript - 如何使用 JavaScript 删除数组中字符后的数字和字母

javascript - 单击按钮时切换右键单击菜单 - jQuery

javascript - AngularJS:在固定位置元素上动画 ng-show 和 ng-hide