现在的位置: 首页 > 综合 > 正文

一个电子表的例子

2013年09月02日 ⁄ 综合 ⁄ 共 1128字 ⁄ 字号 评论关闭

        记得在学习.NET AJAX控件的时候,说过一个timer控件。在讲timer的时候,他用了一个电子表的例子,但是又严格说明,如果只是为了一个电子表,完全没有必要一秒一刷。而是在页面加载的时候读取一下服务器的时间,然后在本地进行时间的增加。

        前几天在找资料的时候碰到了这样的一个代码,进行一下收藏。

        服务端代码

        

protected void Page_Load(object sender, EventArgs e)
        {
            lblTime.Text = DateTime.Now.ToString("hh:mm:ss");
        }

        客户端代码

         需要注意的是,下面代码忽略了网络传输消耗的时间,而且script代码必须在控件的声明下面,否则会出问题,问题具体是什么自己试一下就知道了,出现这个问题的原因,我个人感觉是因为页面加载的机制造成的,所以在引入js文件的时候也需要注意顺序。例如你一个js文件用到了jquery,那么jquery就必须在那个js之前引用。

<form id="form1" runat="server">
        <div>
            <asp:Label ID="lblTime" runat="server" Text="Label"></asp:Label>
            <script type="text/javascript">
                //从页面上获取显示时间的Label
                var server = document.getElementById("lblTime").innerHTML;
                //获取时间的时、分、秒
                var hours = server.substring(0, 2);
                var minutes = server.substring(3, 5);
                var seconds = server.substring(6, 8);

                //设置定时器,每个1秒,执行一此update函数
                setInterval(update, 1000);

                //每过1秒,对服务器获取到的时间进行改变,并且对lblTime进行赋值
                function update() {
                    //增加1秒
                    seconds++;

                    //当为60秒时,把秒设为0,并且分钟加1
                    if (seconds == 60) {
                        seconds = 0;
                        minutes++;
                    }
                    //当为60分时,把分设为0,并且小时加1
                    if (minutes == 60) {
                        minutes = 0;
                        hours++;
                    }
                    //当为24时,把小时还原为0
                    if (hours == 24) {
                        hours = 0;
                    }

                    //将新时间给lblTime
                    document.getElementById("lblTime").innerHTML = hours + ":" + minutes + ":" + seconds;
                }
            </script>
        </div>
    </form>

抱歉!评论已关闭.