javascript setInterval()函数
为情所困
为情所困 2017-05-19 10:12:53
[JavaScript讨论组]

用setInterval()函数动态给li添加css

<ul>
    <li> 1 </li>
    <li> 2 </li>
    <li> 3 </li>
    <li> 4 </li>
  </ul>
var i = -1;
setInterval(function(){
  i++;.
  console.log(i);
  (i > 3) ? i = -1 : changeClass(i);

}, 1000);

function changeClass(j) {
  $('li').eq(j).addClass('cur').siblings().removeClass('cur');
}

发现i的变化是 0->1->2->3->4->0->1->2->3->4这样, 也就意味着下标为3的li添加css 后, 中间会间隔1s, 才会继续动态切换, 因为没有下标为4的li, 这是什么情况造成的

为情所困
为情所困

全部回复(5)
伊谢尔伦

因为 (i > 3) ? i = -1 : changeClass(i); 三元运算,

当i=4的时候 (i > 3) ? 意思就是 4大于3吗?,4肯定大于3就执行i = -1,

就不会执行changeClass(i)这个函数,所以没有下标为4的li

某草草
i大于3的时候,i=-1了。同时这次没有执行changeClass(i)
if(i > 3) i = 0;changeClass(i)
習慣沉默

0 - 3就已经4个了, 你写的(i > 3)才会变成-1, 也就是说要运行五次才会变成-1;
如果你想运行4次就变成-1应该改成 (i >= 3)

仅有的幸福
if(i<3){
    changeClass(i);
}else{
    changeClass(i);
    i = -1 
}

仅有的幸福

第四个永远挂不上 所以建议把i>3 改为i>4或者i>=3

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号