JavaScript -- 总结 11 (小白)

超时定时器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var timeout =  setTimeout(function() {
            alert("过去5秒钟");
        }, 5000);

        clearTimeout(timeout);
    </script>
</body>
</html>

间歇定时器

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // setInterval(); 间歇定时器

        var num = 0;

        // 定时器ID
        var time = setInterval(function () {
            num++;
            console.log(num);
        }, 3000);

        // 清除间歇定时器
        clearInterval(time);
    </script>
</body>

</html>

倒计时

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <!-- 禁用按钮 -->
    <button disabled> <span>10</span>s后开抢!</button>

    <script>
        // 10秒后开抢    
        var btn = document.getElementsByTagName("button")[0];
        var span = document.getElementsByTagName("span")[0];

        // 间歇定时器
        var updateTime = setInterval(function () {
            span.innerHTML -= 1;
        }, 1000);

        // 超时定时器
        var openTime = setTimeout(function () {
            btn.removeAttribute("disabled");

            // 清除间歇定时器
            clearInterval(updateTime);
        }, 10000);
    </script>
</body>

</html>

假期倒计时

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <div class="box"></div>

    <script>
        // 日期对象
        // 当前时间
        var future = new Date("2024/9/17");

        setInterval(function () {

            var date = new Date();

            // 目标时间

            // 时间差
            var time = future.valueOf() - date.valueOf();

            var s = parseInt(time / 1000 % 60);
            var m = parseInt(time / 1000 / 60 % 60);
            var h = parseInt(time / 1000 / 60 / 60 % 24);
            var d = parseInt(time / 1000 / 60 / 60 / 24);

            // console.log(d + "天" + h + "小时" + m + "分钟" + s + "秒");
            document.getElementsByClassName("box")[0].innerHTML = d + "天" + h + "小时" + m + "分钟" + s + "秒";

        }, 1000);
    </script>
</body>

</html>

时间同步

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="box"></div>
    <script>
        var box = document.getElementsByClassName("box")[0];

        getTime(box);

        // 每一秒调用一次函数
        setInterval("getTime(box)", 1000);


        // 时间格式化函数
        function trueTime(time) {
            if (time < 10) {
                time = "0" + time;
            }

            return time;
        }
        // 封装函数
        function getTime(ele) {
            // 日期对象
            var date = new Date();

            // 当前时间:2024年7月24日 周三 10:51:00
            // 获取年 getFullYear()
            var year = date.getFullYear();
            // 获取月 getMonth()+1
            var month = date.getMonth() + 1;
            // 获取日 getDate()
            var day = date.getDate();
            // 获取星期 getDay()
            var week = date.getDay();   // 3        
            var weeks = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"];
            // 获取时
            var hours = date.getHours();
            // 获取分
            var minutes = date.getMinutes();
            // 获取秒
            var seconds = date.getSeconds();
            // 写入到文档
            ele.innerHTML = ("当前时间为:" + year + "年" + month + "月"
                + day + "日 " + weeks[week] + " " + trueTime(hours) +
                ":" + trueTime(minutes) + ":" + trueTime(seconds));
        }
    </script>
</body>

</html>

匀速动画

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .father {
            width: 1000px;
            height: 500px;
            border: 1px solid #000;
            margin: 0 auto;

            position: relative;
        }

        .son {
            width: 200px;
            height: 200px;
            background-color: red;

            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>

<body>
    <button>向右</button>
    <button>向左</button>

    <div class="father">
        <div class="son"></div>
    </div>

    <script>
        // 小盒子以每秒10px的速度向右移动, 直到父元素右侧为止
        var father = document.getElementsByClassName("father")[0];
        var son = document.getElementsByClassName("son")[0];
        var btns = document.getElementsByTagName("button");

        // 定时器id
        var timeId;
        // 向右走
        btns[0].onclick = function () {
            // 每次点击之后,先清除多余定时器
            clearInterval(timeId);

            timeId = setInterval(function () {
                if (son.offsetLeft < father.clientWidth - son.offsetWidth) {
                    son.style.left = son.offsetLeft + 10 + "px";
                }
            }, 10);
        }

        // 向左走
        btns[1].onclick = function () {
            // 每次点击之后,先清除多余定时器
            clearInterval(timeId);

            timeId = setInterval(function () {
                if (son.offsetLeft > 0) {
                    son.style.left = son.offsetLeft - 10 + "px";
                }
            }, 10);
        }
    </script>
</body>

</html>

练习 转圈圈

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>

        .father {
            width: 500px;
            height: 500px;
            border: 1px solid red;
            position: relative;
        }

        .son {
            width: 100px;
            height: 100px;
            background-color: red;
            border-radius: 50%;
            position: absolute;
            top: 0;
            left: 0;
        }

    </style>
</head>
<body>

        <button>转圈圈</button>
        <button>停止</button>
    
    <div class="father">
        <div class="son"></div>
    </div>

    <script>  

        var father = document.getElementsByClassName("father")[0];
        var son = document.getElementsByClassName("son")[0];
        var btns = document.getElementsByTagName("button");

        var w = father.clientWidth - son.offsetWidth;
        var h = father.clientHeight - son.offsetHeight;
        var time;
        btns[0].onclick = function () {
            clearInterval(time);
            time = setInterval(function () {
                if (son.offsetLeft == 0 && son.offsetTop == 0){
                    moveX(son,w);
                } else if(son.offsetLeft == w && son.offsetTop == 0) {
                    moveY(son,h);
                } else if(son.offsetLeft == w && son.offsetTop == h) {
                    moveX(son,0);
                } else if(son.offsetLeft == 0 && son.offsetTop == h) {
                    moveY(son,0);
                }
            },20);
        }
        btns[1].onclick = function () {
            clearInterval(time);
        }
    
        
        // 匀速动画
        // ele 要运动的元素
        // target 运动的目标位置
        function moveX(ele, target) {
            // 先清除定时器
            // 给元素自定义一个属性,用来作为定时器id
            clearInterval(ele.timeId);

            // 定时器
            ele.timeId = setInterval(function () {
                var speed = ele.offsetLeft < target ? 10 : -10;
                ele.style.left = Math.abs(target - ele.offsetLeft) >= 10 ? ele.offsetLeft + speed + "px" : target + "px";
            }, 10);
        }

        function moveY(ele, target) {
            // 先清除定时器
            // 给元素自定义一个属性,用来作为定时器id
            clearInterval(ele.timeId);

            // 定时器
            ele.timeId = setInterval(function () {
                var speed = ele.offsetTop < target ? 10 : -10;
                ele.style.top = Math.abs(target - ele.offsetTop) >= 10 ? ele.offsetTop + speed + "px" : target + "px";
            },10);
        }
     </script>

</body>
</html>
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值