HTML5数字时钟之闹钟程序代码

上一篇文章中,我们介绍了如何制作一个数字时钟,今天我要在本文中给大家介绍在数字时钟基础上增加设置闹钟响铃功能。本文中使用了HTML5的audio元素来调用响铃音频。

 


想要在数字时钟时钟上扩展闹钟效果,需要做的有1、要有一个可以编辑设置闹钟响铃时间的界面;2、每秒钟侦听是否到了响铃时间,如果到了响铃时间则弹出提醒并播放响铃音频。
HTML
我们使用上篇文章使用jQuery和CSS3制作数字时钟(jQuery篇)的html结构,增加闹铃元素,增加设置闹铃的弹出界面,增加响铃提醒界面和audio音频元素。
 
  

 代码如下 复制代码
  <div id="clock" class="light">
        <div class="display">
            <div class="date"></div>
            <div class="alarm"></div>
            <div class="digits"></div>
        </div>
    </div>
    
    <!--设置闹铃时间弹出层-->
    <div class="overlay" id="settime">
        <div id="alarm-dialog">
            <h2>设置闹钟触发时长</h2>
            <label class="hours">
                时
                <input type="number" value="0" min="0" />
            </label>
            <label class="minutes">
                分
                <input type="number" value="0" min="0" />
            </label>
            <label class="seconds">
                秒
                <input type="number" value="0" min="0" />
            </label>
            <div class="button-holder">
                <a id="alarm-set" class="button blue">设置</a>
            </div>
            <a class="close"></a>
        </div>
    </div>
    <!--时间到提醒弹出层-->
    <div class="overlay" id="timeisup">
        <div id="time-is-up">
            <h2>时间到!</h2>
            <div class="button-holder">
                <a class="button blue">关闭</a>
            </div>
        </div>
    </div>
    <!--加载音频-->
    <audio id="ring" preload>
        <source src="audio/ticktac.mp3" type="audio/mpeg" />
        <source src="audio/ticktac.ogg" type="audio/ogg" />
    </audio>

jQuery
首先,我们利用CSS将设置时间和时间到的两个弹出层隐藏,具体请看demo中的css,这里不详述。然后当点击时钟旁边的闹铃图标时,显示弹出层#settime,显示时分秒设置表单,在点击“设置”按钮时,我们要对输入的时间数字进行验证,具体请看下面的代码:
 

 代码如下 复制代码
$(function(){
    定义初始计数变量
    var alarm_counter = -1;
    //调用设置时间界面
    $('.alarm').click(function(){
        $("#settime").show();
    });
 
    $('a.close').click(function(){
        $("#settime").hide();
    });
    //设置时间
    $("#alarm-set").click(function(){
        var valid = true, after = 0,
            to_seconds = [3600, 60, 1];
        
        $("#settime").find('input').each(function(i){
            if(this.validity && !this.validity.valid){
 
                valid = false;
                this.focus();
 
                return false;
            }
            after += to_seconds[i] * parseInt(parseInt(this.value));
        });
 
        if(!valid){
            alert('请输入有效数字!');
            return;
        }
 
        if(after < 1){
            alert('请输入有效的时间!');
            return;    
        }
        //设置计数变量值
        alarm_counter = after;
        $("#settime").hide();
    });
    
    $("#timeisup").click(function(){
        $("#timeisup").fadeOut();
        $("#settime").find('input').attr('value','0');
    });
});
然后我们要在每秒执行update_time()函数中做判断,判断计数变量alarm_counter的值,如果alarm_counter的值大于0,说明还没到响铃时间,这个时候计数变量减1,闹铃图标样式处于active状态;如果alarm_counter刚好等于0,说明到了响铃时间,这时弹出“时间到”提醒层,并播放音频;如果alarm_counter小于0,则说明响铃处于未工作状态。
 
$(function(){
    ...
    // 让时钟跑起来
    (function update_time(){
        ...
        //闹钟
        var alarm = $(".alarm");
        if(alarm_counter > 0){
            alarm_counter--;
            alarm.addClass('active');
        }
        else if(alarm_counter == 0){
 
            $("#timeisup").fadeIn();
            //在支持html audio的浏览器上播放声音
            try{
                $("#ring")[0].play();
            }
            catch(e){}
            
            alarm_counter--;
            alarm.removeClass('active');
        }
        else{
            alarm.removeClass('active');
        }
        // 每秒钟运行一次
        setTimeout(update_time, 1000);
    })();
});

将以上代码好好整理,就可以看到demo中的效果,你也可以直接下载DEMO中的源码来学习,注意音频audio元素需要支持html5的浏览器才会有效果。

时间: 2024-10-28 23:04:13

HTML5数字时钟之闹钟程序代码的相关文章

c语言-基于C语言的数字时钟和闹钟?

问题描述 基于C语言的数字时钟和闹钟? 如何采用STC51开发板,在LCD1602屏上显示当前时间(小时:分:秒),并能键盘设定闹钟时间,时间到蜂鸣器叫???????? 解决方案 首先你要自己能驱动1602,这个有手册,按照手册写时序完成,也可以在网上找源代码. 你是做毕业设计吧,看你提问感觉是什么都不懂的样子,最好去找一下视频看看

JavaScript中把数字转换为字符串的程序代码_基础知识

1:把数字转换为字符串的方法 复制代码 代码如下:      var string_value = String(number);     string_value = number.toString();       var n = 17;      binary_string = n.toString(2);                //Evaluates to "10001"      octal_string = "0" + n.toString(8)

Python/PHP数字螺旋矩阵的程序代码

什么是螺旋矩阵? 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环.下图就是一个螺旋矩阵的示例: 郑晓在这里分别使用了Python和PHP来实现了数字的螺旋矩阵.其中的PHP版本写成了函数,更加灵活的对矩阵进行控制.写Python时由于是第一次写,有些生疏,分别用了两种方法来实现...下面上代码吧: Python螺旋矩阵的第一版(比较难以理解?!): #coding:gbk L = 6 #矩阵大小 result = [[0]*L for 

javascript实现滚动效果的数字时钟实例_javascript技巧

网上关于javascript实现数字时钟效果的实例很多,但是本文给大家介绍的是滚动效果的数字时钟.小编觉得效果很炫,下面分享给大家. 先来看看很炫的效果 下面是代码实例 javascript代码部分: window.onload=function(){ function toDou(n){ return n<10?"0"+n:""+n; } var oImg=document.getElementsByTagName("img"); set

java 数字时钟程序代码

import java.awt.*; import java.util.*; import javax.swing.*; //数字时钟 public class ClockDemo extends JFrame implements Runnable{  Thread clock;     public ClockDemo(){   super("数字时钟"); //调用父类构造函数    setFont(new Font("Times New Roman",Fon

c++-mfc数字时钟 闹钟求助

问题描述 mfc数字时钟 闹钟求助 void CNDlg::OnBnClickedok() { CString s; CString h, m, c; m_h.GetWindowText(h); m_m.GetWindowText(m); m_s.GetWindowText(c); s = h + ":" + m + ":" + c; MessageBox(s, L"设定成功", MB_OK); } void CNDlg::OnTimer(UIN

c语言-关于AT89C51单片机数字时钟的设计C语言程序warning问题

问题描述 关于AT89C51单片机数字时钟的设计C语言程序warning问题 本人新手,还希望各位大大帮忙看下怎么解决 Build target 'Target 1' assembling STARTUP.A51... linking... *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START MODULE: STARTUP.obj (?C_STARTUP) *** WARNING L2: REFERENCE MADE TO UN

简单数字钟-求一基于AT89C52的数字钟设计的C语言程序代码,图已做好,有流程图和项目要求,跪求大神帮忙!!!

问题描述 求一基于AT89C52的数字钟设计的C语言程序代码,图已做好,有流程图和项目要求,跪求大神帮忙!!! 麻烦大神最好能把程序与图匹配符合要求就好了 一会把图和要求发在下面 解决方案 解决方案二: 解决方案三: 解决方案四: 解决方案五: 再次感谢,求帮忙,求助攻,求各种

JS 实现倒计时数字时钟效果【附实例代码】_javascript技巧

这篇文章主要介绍了JS实现的网页倒计时数字时钟效果,是一款非常实用的javascript倒计时特效,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了JS实现的网页倒计时数字时钟效果.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&