吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1298|回复: 8
收起左侧

[求助] js 定时器为啥自己停住了

[复制链接]
sxfxtf 发表于 2022-1-4 23:20
我想写个抽奖的js脚本,12张图做轮播图,js的定时器向左滚动,每张图宽高为200,左偏-2400px的时候设置为0,然后重新向左移动,但是我定时器到-2400px就自己停住了.
有没有大佬可以解惑啊

[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" >
<!--    <script src="../bootstrap_js/bootstrap.js"></script>-->
    <script src="./xyz.js"></script>
    <style type="text/css">
        *{
            padding: 0;
            margin: 0;
        }
        ul{
            width: 3000px;
            height: 200px;
            left: 0;
            position: absolute;
            /*animation: rollover 9s linear infinite;*/
        }
        ul li{
            list-style: none;
        }
        ul li img{
            width: 200px;
            height: 200px;
            float: left;
        }
        .show{
            width: 600px;
            height: 200px;
            overflow: hidden;
            position: relative;
        }

        /*@keyframes rollover {*/
        /*    from{left: 0}*/
        /*    to{left: -2400px}*/
        /*}*/
    </style>
</head>
<body>
<div class="container-fluid">
    <div class="row">
        <div class="col-md-7 col-md-offset-3">
            <div class="show">
            <ul class="pic_lists">
                <li><img src="./img/1.jpeg" alt="" class="img-rounded"></li>
                <li><img src="./img/2.jpeg" alt="" class="img-circle"></li>
                <li><img src="./img/3.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/4.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/5.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/6.jpg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/7.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/8.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/9.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/10.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/11.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/12.jpeg" alt="" class="img-thumbnail"></li>
                <li><img src="./img/1.jpeg" alt="" class="img-rounded"></li>
                <li><img src="./img/2.jpeg" alt="" class="img-circle"></li>
                <li><img src="./img/3.jpeg" alt="" class="img-thumbnail"></li>
            </ul>
                </div>
        </div>
        <div class="col-md-7 col-md-offset-3">
        <div class="btn btn-success" id = "clk">点我</div>
        </div>
    </div>
</div>

</body>
</html>



[JavaScript] 纯文本查看 复制代码
window.onload = function () {
    var st_btn = document.getElementById("clk")


    function move(obj) {
        current_left = obj.offsetLeft
        if (current_left === -2400) {
            current_left = 0
        }

        change_left = current_left - 200 + "px"
        obj.style.left = change_left
    }

    var rdm
    var children_num
    var timer
    var is_flag = true
    if (is_flag) {
        st_btn.onclick = function () {
            var uls = document.getElementsByClassName("pic_lists")[0]
            is_flag = false
            children_num = uls.children
            rdm = Math.round(Math.random() * (children_num.length - 3))
            //choose_obj 随机数  choose_obj_left 随机数决定的图片向左偏移位置 current_left 当前偏移

            choose_obj = children_num[rdm]
            choose_obj_left = rdm * -200
            total_left = -7200 + choose_obj_left
            clearInterval(timer)

            timer = setInterval(function () {
                current_left = uls.offsetLeft
                //这里有问题求助啊 这里有问题求助啊 这里有问题求助啊 这里有问题求助啊
                if (current_left == -2400) {
                    current_left == 0
                } else if (current_left > total_left) {
                    current_left -= 20;
                    uls.style.left = `${current_left}px`
                }
            }, 20)


        }


    }


};

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sgvvvv 发表于 2022-1-4 23:32
offsetLeft不能赋值
变为0要像下面那个uls.style.left = 0那样写
smldhz 发表于 2022-1-5 00:23
[JavaScript] 纯文本查看 复制代码
current_left = uls.offsetLeft
                //这里有问题求助啊 这里有问题求助啊 这里有问题求助啊 这里有问题求助啊
                if (current_left == -2400) {
                    current_left == 0

两个问题
一是你这里用的current_left == 0; 这不是赋值 是比较 current_left的值不会改变
二是 current_left是来自开头的一句current_left = uls.offsetLeft;所以你在后面怎么改 开头都会被uls.offsetLeft值覆盖掉;
好了 解决方法就是 把current_left == 0; 换成 uls.style.left = 0;

免费评分

参与人数 1热心值 +1 收起 理由
sxfxtf + 1 我很赞同!

查看全部评分

头像被屏蔽
wanlinwo 发表于 2022-1-5 08:43
qingugu 发表于 2022-1-5 09:15
学到了哦
nulla2011 发表于 2022-1-5 11:01
36行多打个等号
wan1330 发表于 2022-1-5 12:52
current_left == 0错了,这是判断不是赋值,他当然不执行
 楼主| sxfxtf 发表于 2022-1-5 21:29
smldhz 发表于 2022-1-5 00:23
[mw_shl_code=javascript,true]current_left = uls.offsetLeft
                //这里有问题求助啊 这里 ...

非常感谢,学习到了
wsqqzmjfjq123 发表于 2022-1-9 13:07
[JavaScript] 纯文本查看 复制代码
current_left = uls.offsetLeft
                if (current_left == -2400) {
                    current_left == 0
                }

两个问题
1.是current_left == 0; 是判断,不是赋值,current_left的值还是uls.offsetLeft
2.没有把预期的current_left(即0)赋值给utls.offsetLeft
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表