Javascript计数器变量代码抛出无法读取属性异常

时间:2015-07-24 17:14:06

标签: javascript arrays javascript-events counter

我已经建立了一个带有旋转木马图像滑块的小网站。图像滑块有一个下一个和上一个按钮,单击该按钮时,会触发带有一些相应文本的下一个或上一个图像。但是,当页面首次加载时,如果单击的第一个按钮是上一个按钮,则滑块会抛出一个无法读取属性的异常。错误如下。我还将所有html,css和js放在下面的代码块中。任何见解将不胜感激。


<html>
<title>Showcase Website</title>
<meta charset="UTF-8">
<head>
<style>
header {
      width:100%;
      background-color:lightblue;
      text-align:center;
      padding:5px;
  }
  /*Use of the child selector Combinator*/
  header > h1 {
      color: black;
}
  /*Use of Pseudo-Class*/
  p::first-letter {
      font-size: x-large;
}
  /*Use of the Navigation Bar*/
  nav {
      line-height:30px;
      background-color:#8f8f8f;
      height:1500px;
      width:100px;
      float:left;
      padding:5px;
      position: relative;
  }
  /*Pseudo-Class*/
  a:visited {
      color: #00BDA0;
}
  /*Using Box Model, Border, Outline, Margin, Padding, Dimension, Float*/
  section {
      height:350px;
      width:100%;
      padding:10px 0 30px 2px;
      border: 3px solid gray;
      margin: 0px 1px 5px 25px;
  }
  /*Using the "display: none" property to hide a previous title*/
  h1.hidden{
      display: none;
  }
  /*Using Positioning*/
  article.art1 {
      height:350px;
      width:350px;
      float:center;
      padding-top:100px;
      padding-left:50px;
      position: relative;
      top: 125px;
      left: 85px;
  }
/*Using Positioning*/
  aside {
      height:350px;
      width:350px;
      float:right;
      padding-top:10px;
      padding-right:150px;
      position: relative;
      top: 45px;
      left: 45px;
      right: 50px;
  }
  footer {
      background-color:lightblue;
      color:white;
      clear:both;
      text-align:center;
      padding:5px;
  }

@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,300,600);

html {
border-top: 5px solid #fff;
background: #58DDAF;
color: #2a2a2a;
}

html, body {
margin: 0;
padding: 0;
font-family: 'Open Sans';
}

h1 {
color: #fff;
text-align: center;
font-weight: 300;
}

#slider {
position: relative;
overflow: hidden;
margin: 20px auto 0 auto;
border-radius: 4px;
}

#slider ul {
position: relative;
margin: 0;
padding: 0;
height: 200px;
list-style: none;
}

#slider ul li {
position: relative;
display: block;
float: left;
margin: 0;
padding: 0;
width: 500px;
height: 300px;
background: #ccc;
text-align: center;
line-height: 300px;
}

button.control_prev, button.control_next {
position: absolute;
top: 40%;
z-index: 999;
display: block;
padding: 2% 2%;
width: auto;
height: auto;
background: #2a2a2a;
color: #fff;
text-decoration: none;
font-weight: 600;
font-size: 10px;
opacity: 0.8;
cursor: pointer;
border:solid transparent;
}

button.control_prev:hover, button.control_next:hover {
opacity: 1;
-webkit-transition: all 0.2s ease;
}

button.control_prev {
border-radius: 0 2px 2px 0;
}

button.control_next {
right: 0;
border-radius: 2px 0 0 2px;
}

.slider_option {
  position: relative;
  margin: 10px auto;
  width: 160px;
  font-size: 18px;
}

.active{
    color:red;
}
.imageDes{
    color:red;
}
</style>
</head>
<body>
  <main>
    <header>
      <h1>Text</h1>
    </header>

    <nav>
       <a href="">Home</a>
      <br><a href="">How To</a>
      <br><a href="">Additional</a>
      <br>
    </nav>

    <section class="section3">
      <h1>Text</h1>
      <p>
        Text
      </p>
      <ul>
        <li>Text</li>
        <li>Text</li>
        <li>Text</li>
      </ul>
    </section>


<div id="slider">

  <button class="control_next">></button>
  <button class="control_prev"><</button>
  <ul>
     <li class="active" data-des="Image 1">SLIDE 1</li>
     <li data-des="Image 2" style="background: #aaa;">SLIDE 2</li>
     <li data-des="Image 3">SLIDE 3</li>
     <li data-des="Image 4" style="background: #aaa;">SLIDE 4</li>
  </ul>  
</div>
<div class="imageDes"></div>

<footer>
Name Here
    </footer>


  </main>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
var dataJson=[{"Imagedes":"Description for Image one which can be so long that it might extend upto 2 lines in most of the cases and that has to be rendered on image change"},
    {"Imagedes":"Description for Image two which can be so long that it might extend upto 2 lines in most of the cases and that has to be rendered on image change"},
    {"Imagedes":"Description for Image three which can be so long that it might extend upto 2 lines in most of the cases and that has to be rendered on image change"},
        {"Imagedes":"Description for Image four which can be so long that it might extend upto 2 lines in most of the cases and that has to be rendered on image change"}]

var index=0;
$('.imageDes').text(dataJson[0].Imagedes);
jQuery(document).ready(function ($) {

  $('#checkbox').change(function(){
    setInterval(function () {
    moveRight();
   }, 3000);
 });

var slideCount = $('#slider ul li').length;
var slideWidth = $('#slider ul li').width();
var slideHeight = $('#slider ul li').height();
var sliderUlWidth = slideCount * slideWidth;

$('#slider').css({ width: slideWidth, height: slideHeight });

$('#slider ul').css({ width: sliderUlWidth, marginLeft: - slideWidth });

$('#slider ul li:last-child').prependTo('#slider ul');

function moveLeft() {
    $('#slider ul').animate({
        left: + slideWidth
    }, 200, function () {
        $('#slider ul li:last-child').prependTo('#slider ul');
        $('#slider ul').css('left', '');

    });
    if(index<=0)
        index=slideCount;
    else
        index--
    $('.imageDes').text(dataJson[index].Imagedes);
};

function moveRight() {
    $('#slider ul').animate({
        left: - slideWidth
    }, 200, function () {
        $('#slider ul li:first-child').appendTo('#slider ul');
        $('#slider ul').css('left', '');
    });

    if(index+1>=slideCount)
        index=0;
    else
        index++
     $('.imageDes').text(dataJson[index].Imagedes);

};

$('button.control_prev').click(function () {
    moveLeft();
});

$('button.control_next').click(function () {
    moveRight();
});

});
</script>
</body>
</html>


{{1}}

1 个答案:

答案 0 :(得分:0)

您将最大值设置得太高。

index=slideCount 

需要

index=slideCount-1