1-13问题
来源:1-13 作业题
慕丝6937110
2019-01-09 01:06:26

1:点击左右按钮时发生了什么错误吗,看页面效果我好像并没有发现有什么不对的地方,什么叫默认跳转行为,不理解
2:
var numberOfPics=$('.pic').length;
//console.log(numberOfPics);
var index=0;
var picAuto;
//封装一个函数,用于切换图片
function mySlider(){
index++;
if(index>=numberOfPics){
index=0;
}
$('.pic').eq(index).addClass('active');
$('.pic').eq(index).siblings().removeClass('active');
$('span').eq(index).addClass('dots-active');
$('span').eq(index).siblings().removeClass('dots-active');
}
//鼠标滑过后,开始自动轮播
$('.main').mouseout(function(){
picAuto=setInterval(function(){
mySlider();
},2000)
})
//调用onmouseout这个方法,使得自动执行onmouseout事件,使页面刚加载出来就自动轮播
$('.main').mouseout();
//当鼠标放在图片或"上下按钮"以及圆点上面时,清除定时器,使自动轮播停止
$('.main').mouseover(function(){
clearInterval(picAuto);
})
//点击往下翻的按键
$('.next').click(function(){
mySlider();
})
//点击往上翻的按钮,因为index为递减,所以这边单独写一个函数,不调用slider
$('.previous').click(function(){
index--;
if(index<0){
index=4;
}
$('.pic').eq(index).addClass('active');
$('.pic').eq(index).siblings().removeClass('active');
$('span').eq(index).addClass('dots-active');
$('span').eq(index).siblings().removeClass('dots-active');
})
//点击圆点切换图片
$('span').click(function(event){
//获取每个圆点的索引值
var dotIndex=$(event.target).index();
//用圆点的索引值来控制要选择的图片
$('.pic').eq(dotIndex).addClass('active');
$('.pic').eq(dotIndex).siblings().removeClass('active')
$('span').eq(dotIndex).addClass('dots-active');
$('span').eq(dotIndex).siblings().removeClass('dots-active');
})把var dotIndex=$(event.target).index();这里的变量名从dotIndex改为index有什么区别吗???我在一开始就定义过一个叫index的变量了,用他来控制轮播的。我确实发现了点击圆点时的跳转错误,但这个错误原理是什么呢,为什么会出现这样的错误,不懂啊
1回答
好帮手慕夭夭
2019-01-09
你好同学 , 问题解答如下 :
作业中左右按钮逻辑并没有错误 , 批复老师是给同学一个建议 . 因为a标签有默认的跳转行为 . 跳转行为同学可以按照如下代码 ,自己试一试就能够理解了 :

当点击a标签时 , 页面会跳转到顶部 ,这就是一个跳转行为 . 这是a标签默认的一个特点 . 因为你的作业本身就显示在最顶部了 ,所以点击的时候跳转的效果看的并不是很明显 . 但是建议同学参考批复文档 , 设置一个阻止默认行为更好 .
因为你在点击事件中把点击的当前索引赋值给一个新的变量dotIndex ,此时index还是原来的index .
例如页面打开时 ,自动进行轮播 ,调用mySlider . 图片自动轮播到第二张图片 , 此时index值为1 . 这个时候点击第一个圆点 , i索引应该变为0 ,但是此时事件中把索引0赋值给了dotIndex ,index还是之前的1. 所以鼠标移出后 , 图片又开始自动轮播,调用mySlider . 仍然会按照index=1的索引顺序去执行轮播 .

所以你应该让整个代码逻辑中的index同步 , 不管是点击圆点还是点击按钮或者自动轮播 ,它的索引都为index
祝学习愉快 ,望采纳 .