解密"秒杀"软件 | JavaScript最佳入门案例-阿里云开发者社区

开发者社区> 木子昭> 正文

解密"秒杀"软件 | JavaScript最佳入门案例

简介: 网上购物变得的越来普遍,各种"秒杀"抢购的活动越来越多,除了早年雷布斯的"饥饿营销",大多数秒杀活动还是有货源的,我们秒不到货,大多是因为我们败给了计算机脚本.
+关注继续查看

网上购物变得的越来普遍,各种"秒杀"抢购的活动越来越多,除了早年雷布斯的"饥饿营销",大多数秒杀活动还是有货源的,我们秒不到货,大多是因为我们败给了计算机脚本...

秒杀

用javascript实现秒杀倒计时的效果

模拟一个激动人心的 "剁手节" 的倒计时页面!

2017年"剁手节"倒计时

chrome "奇技淫巧" 之 脚本编辑器!

使用chrome自带的脚本工具,写一个秒杀的脚本!

打开脚本工具
编写脚本

运行脚本,脚本自动"秒杀"

运行脚本

这是运行时的效果演示,最后一次我的鼠标没动,脚本模拟鼠标完成了最后的点击!

最终效果演示!

javascript与java是什么关系?

大概就是 "雷锋" 与 "雷锋塔"的关系!

为啥要学javascript, javascript的优势是什么?

其实原生的javascript语言并不好学,所以很多人选择折中去学jquery(jquery是javascript的一个库,比javascript稍微容易一些),但我们没有选择,javascript是唯一被各大浏览器原生支持的语言,坦率的讲,javascript的水还是蛮深的,没有几个人敢说自己精通javascript;关于优势:Node.js可以开发服务端,也就是,把javascript玩6了,就可以尝试做全栈了!

示例中源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>剁手倒计时!</title>

    <script>

        window.onload = function () {

            //获取HTML对象
            var oTime_box = document.getElementById("time_box");

            //设置秒杀开始时间,这里以 "剁手节|双十一"为例
            // 0-11 表示 12个月(容易出错!)

            // 1-31 表示一个月的某天(这个要看月份具体的情况,也可能是1-28,1-29,1-30)

            // 0-23 表示一天的24小时
            // 0-59 表示一小时的60分钟
            // 0-60 表示一分钟的60秒
            //今天的时间
            //var targetDate = new Date(2017, 8, 18, 12, 0, 0);
            //双十一的时间
            var targetDate = new Date(2017, 10, 11, 0, 0, 0);

            //setInterval函数可以每隔一段的时间调用一次目标函数
            // 我们为了精准, 每隔0.1秒,更新一次当前时间

            setInterval(update_time, 100);
            //页面加载完成后立刻调用一次函数
            update_time();


            //更新时间的主函数,这是最常见的函数命名方式

            function update_time() {

                //获取当前时间
                var nowDate = new Date();

                //获取据目标时间的    秒数

                console.log(targetDate);
                var edge_millisecond = parseInt((targetDate - nowDate)/1000);


                // 获取天数

                var edge_days = parseInt(edge_millisecond/(24*60*60));

                //获取小时数

                var edge_hours = parseInt(edge_millisecond%(24*60*60)/3600);

                //获取分钟数

                var edge_minutes = parseInt(edge_millisecond%(24*60*60)%(60*60)/60);

                //获取秒数

                var edge_seconds = parseInt(edge_millisecond%(24*60*60)%(60*60)%60);


                // 为了美观,使显示的数字一直保持两位
                if (edge_seconds<=9){

                    edge_seconds = "0" + edge_seconds;

                }

                if (edge_minutes <=9){

                    edge_minutes = "0" + edge_minutes;

                }


                if (edge_hours <=9){

                    edge_hours = "0" + edge_hours;

                }

                if (edge_days <=9){

                    edge_days = "0" + edge_days;

                }



                // 为了避免出现负值,时间全部归零
                if (nowDate >= targetDate){

                    edge_days = "00";
                    edge_hours = "00";
                    edge_minutes = "00";
                    edge_seconds = "00";

                }


                var result_time = '距离"双十一 , 剁手节"<br>还剩' + edge_days + "天" + edge_hours + "小时" + edge_minutes + "分" + edge_seconds +"秒";

                oTime_box.innerHTML = result_time;

                //获取点击区域
                var obu = document.getElementById("butt");

                // 点击事件逻辑!
                obu.onclick = function () {

                    if (nowDate > targetDate){
                        alert("抢购成功!")

                    }else{

                        alert("还没到抢购时间呢!")


                    }
                };


            }


        }

    </script>


    <style>

        #time_box{

            font-size: 50px;

            margin: 0 auto;


        }

        .content{

            width: 800px;

            margin: 15% auto;

            text-align: center;

            line-height: 100px;
            color: #ea6f5a;;

        }

        #butt{
            width: 200px;
            height: 80px;
            background-color: #ea6f5a;
            border-radius: 3px;
            text-align: center;
            line-height: 80px;
            color: white;
            margin: 0 auto;
            font-size: 35px;
            top: 30%;

        }

        .my_button{

            width: 100%;


        }




    </style>


</head>
<body>

<!--秒杀内容-->
<div class="content">

<div id="time_box">

</div>
</div>


<!--按钮-->
<div class="my_button">

<div id="butt">

    点击秒杀!

</div>
</div>


</body>
</html>

秒杀脚本

// 获取按钮对象
var obu = document.getElementById("butt");

// 设置秒杀时间(默认为11月11号0时0分秒)
var targetDate = new Date(2017, 10, 11, 0, 0, 0);

// 获取当前时间
var nowDate = new Date();

//用递归实现,循环监听时间的变化,
function check_click(){

    nowDate = new Date();
    //时间到,则进行点击
    if (nowDate > targetDate){
    
        obu.onclick();
    }

    else{
    //每隔 1秒检测一次时间
    setTimeout(check_click,1000); 
    }



}

console.log("开始!");
//调用函数
check_click();

如果您喜欢python,喜欢故事,请点赞或关注我!您的支持是对作者最大的鼓励!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Winjs – 微软开源技术发布的 JavaScript 组件集
  Winjs 是由微软开源技术的开发者推出的一组 JavaScript 组件,包括 ListView、ListView、Tooltip、DatePicker、Ratings 等等,帮助 Web 开发人员使用最好的网站功能解决方案。
753 0
Java软件环境全安装实战(阿里云CentOS6.8)(四)
Java软件环境全安装实战(阿里云CentOS6.8)(四)
6 0
世界最危险恶意软件Vawtrak可通过收藏夹小图标更新
本文讲的是世界最危险恶意软件Vawtrak可通过收藏夹小图标更新,号称世界上最危险的恶意软件之一Vawtrak,现在可以使用浏览器收藏夹中的小图标(favicon)发送和接收数据。
1181 0
【Java】各种软件安装与环境配置的失败
<span style="font-family:楷体; font-family:楷体; font-size:19px; line-height:27px; widows:auto">   <span style="white-space:pre"></span>又来到了java的世界,看了一段时间的视频,感觉太空虚,便从网上找到一个教程,想做几个demo试试,少不了的前期准备:Java开
2274 0
+关注
木子昭
# 专注极客体验 # 享受效率生活 --- 让程序去做呗~ 程序又不会累~
217
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载