<input type="hidden" value="@(Model.TimeLength)" id="examTimeLength" />
                    <input type="hidden" value="@ViewData["ExamId"]" id="_ControlerId" />
                    <span id="@ViewData["ExamId"]" class="fas_time"></span>
                    <a class="fas_submit" id="submitExam" href="#" style="display: none">我要交卷</a>
 function timer() {
        var time = $("#examTimeLength").val();
        var Timer = {
            controleId: $("#_ControlerId").val(),
            cookieName: $("#_ControlerId").val(),
            iTotalTime: null,
            timerId: null,
            init: function () {
                this.remainTime();
            },
            addZero: function (num) {
                var str = num < 10 ? Number(num) <= 0 ? '00' : '0' + num : num + '';
                return str;
            },
            remainTime: function () {
                var _this = this,
                    oSpan = document.getElementById(_this.controleId);
                _this.timerId = setInterval(function () {

                    _this.iTotalTime = time;
                    if (_this.iTotalTime <= 0) {
                        clearInterval(_this.timerId);
                        var functionName = "submitAnswer";
                        if (functionName) {
                            eval(functionName + "()");
                        }
                        return;
                    }

                    _this.iTotalTime--;
                    time--;
                    var hours = _this.addZero(Math.floor(_this.iTotalTime / 3600));
                    var minutes = _this.addZero(Math.floor((_this.iTotalTime - hours * 3600) / 60));

                    var secs = _this.addZero(Math.floor(_this.iTotalTime % 60));
                    var str = '{h}:{m}:{s}';

                    str = str.replace('{h}', hours);
                    str = str.replace('{m}', minutes);
                    str = str.replace('{s}', secs);

                    oSpan.innerHTML = str;
                }, 1000);
            }

        };
        Timer.init();
    }

ASP.NET RAZOR自动生成的js Timer的更多相关文章

  1. h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片

    得益于前辈的分享,做了一个h5录音的demo.效果图如下: 点击开始录音会先弹出确认框: 首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音: 点击发送 将录音内容发送到对话框中.点 ...

  2. 9.1.2 asp.net core 自动生成组合查询

    在做系统的时候,经常遇到前台录入一大堆的查询条件,然后点击查询提交后台,在Controller里面生成对应的查询SQL或者表达式,数据库执行再将结果返回客户端. 例如如下页面,输入三个条件,日志类型. ...

  3. asp.net webAPI 自动生成帮助文档并测试

    之前在项目中有用到webapi对外提供接口,发现在项目中有根据webapi的方法和注释自动生成帮助文档,还可以测试webapi方法,功能很是强大,现拿出来与大家分享一下. 先看一下生成的webapi文 ...

  4. 自动生成proto Js语句

    在与后端的WebSocket通信时,前端要带一个proto文件是一个累赘的事情.首先是明显的曝光了协议实体对象,再一个浏览器客户端很容易会缓存该文件,新的协议更新可能导致客户端不能使用,另外在cdn服 ...

  5. Windows使用Node.js自动生成Vue.js模版环境部署步骤-----记录

    node.js官网下载并安装node 进入node文档目录下,运行cmd 输入 node -v 查看node版本 出现表示安装完成 输入 npm -v 显示npm版本信息 安装cnpm 输入 npm ...

  6. SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码

    在SpringMVC学习系列(6) 之 数据验证中我们已经学习了如何结合Hibernate-validator进行后台的数据合法性验证,但是通常来说后台验证只是第二道保险,为了更好的用户体验会现在前端 ...

  7. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转

    .net mvc 站点自带简易SSL加密传输   因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...

  8. Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html

    Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...

  9. ionic + asp.net core webapi + keycloak实现前后端用户认证和自动生成客户端代码

    概述 本文使用ionic/angular开发网页前台,asp.net core webapi开发restful service,使用keycloak保护前台页面和后台服务,并且利用open api自动 ...

随机推荐

  1. 双网卡设置(转:https://www.cnblogs.com/visionfeng/p/5825078.html)

    双网卡一般情况不能有两个网关 特别是别设内网网关,这样有段时间过后会出现访问不了外网情况 支持两个网关的方法倒是有 让双网卡一台电脑拥有两个网关(转) 首先要声明一点,双网卡一台电脑拥有两个网关是不可 ...

  2. Flutter 布局(六)- SizedOverflowBox、Transform、CustomSingleChildLayout详解

    本文主要介绍Flutter布局中的SizedOverflowBox.Transform.CustomSingleChildLayout三种控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. ...

  3. Java String和Date的转换

    String—>Date方法一: String dateString = "2016-01-08"; try { SimpleDateFormat sdf = new Sim ...

  4. 【详细】【转】CentOS 7部署ASP.NET Core应用程序

    很早就看过关于net core部署在Linux上的文章,自己也曾亲自将项目部署在Linux上,今天看到这篇文章,为其格式之工整而转! 1.环境准备 网上看了一下,Linux云服务器还挺贵的,那就只好先 ...

  5. Ubuntu16.04升级 Ubuntu18.04

    1.更新资源 $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt dist-upgrade 2.安装update-manager-core ...

  6. JavaScript大杂烩7 - 理解内置集合

    JavaScript内置了很多对象,简单的类型如String,Number,Boolean (相应的"值类型"拥有相同的方法),复杂一点的如Function,Object,Arra ...

  7. VMware-workstation12.5.6 新建虚拟机 安装 centos6.5

    1.到官方下载镜像文件 注意:看到上面那两个红框不要着急复制链接用迅雷下载,因为点击进去是个页面,不知道官方做这个用意是怎样的,个人感觉很傻缺我们只要点击第一个红框就行 *************** ...

  8. 洗礼灵魂,修炼python(40)--面向对象编程(10)—定制魔法方法+time模块

    定制魔法方法 1.什么是定制魔法方法 首先定制是什么意思呢?其实就是自定义了,根据我们想要的要求来自定义.而在python中,其实那些所谓的内置函数,内置方法,内置属性之类的其实也是自定义出来的,不过 ...

  9. 【PAT】B1067 试密码(20 分)

    注意读取时的换行符用getchar吸收 第十个错误后直接输出锁定 #include<cstdio> #include<string.h> int main(){ char mi ...

  10. Linux 小知识翻译 - 「X Window系统」

    X Window System是给Unix系的OS提供的一套窗口管理软件或者说是组件.X Window System已经成为了在Linux上使用GUI环境的不可或缺的东西了. X Window Sys ...