为什么if(Timer)的时候就会执行下面的脚本;这个判断到底是什么原理?
//封装一个代替 getElementById()的方法
function byId(id){
return typeof(id) === "string"?document.getElementById(id):id;
}
console.log(byId("main"));//如果是字符串就提取出来;如果不是字符串就返回该值
//鼠标滑过图片 自动轮播停止;离开重新开始
// 全局变量
var index=0,
timer=null,
pics=byId("banner").getElementsByTagName("div"),
len=pics.length;
console.log(len);
function slideImg(){
//先取出 main 这个盒子
var main=byId("main");
//滑过清除定时器,离开继续
main.onmouseover=function(){
//滑上时清除定时器
if(timer){//判断如果timer在执行;那么就执行下面的脚本
clearInterval(timer);
}
}
main.onmouseout=function(){
//鼠标移出触发
timer=setInterval(function(){
index++; //len=3 0 1 2
if(index>=len){
index=0;
}
console.log(index);
//切换图片
changeImg();//调用changeImg()的函数;切换效果
},3000);//间歇调用;3秒调用一次
}
//调用函数;直接触发移出的函数
main.onmouseout();
}
function changeImg(){
//要使用className就要所有的calss因为会重写 删掉之前的
//遍历banner下所有的div,将其隐藏
for(i=0;i<len;i++){
pics[i].style.display="none";
}
pics[index].style.display="block";
}
slideImg()
正在回答 回答被采纳积分+1
我明白了一点。
首先明确一点,setInterval()这个方法一旦执行,就会有一个返回值(这个返回值我不清楚是固定的1还是ID),通过timer = setInterval()赋值给了 timer。 而timer初始赋值为null,其布尔值为false。那么再来看清除定时器的语句
if (timer) clearInterval(timer);
如果 timer 的值为真,则执行 后面clearInterval方法。其实就是说:网页一打开,轮播图就开始自己换了,timer就已经不是null了,值肯定为真,就会执行后面的方法。
但是还有一点不明白,为什么 一定要用IF语句判断一下呢?我鼠标移上去,就直接清除计时不可以么?效果上是一样的,求解答。
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36713 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星