注册 登录
编程论坛 JavaScript论坛

求高手解答计时器

wube 发布于 2017-06-19 14:47, 1744 次点击
因为我不会JS~所以我直接从网路上的网页撷取网页代码~过滤出我要的功能~
代码原功能是~计时5分钟~每5分钟跳出警示视窗~使用者须确认~有确认时间以5分钟为一个单位累计~
没确认网页强制关闭~最后得出总阅读时数~

1.我把每5分钟为一单位的功能去除~因为我目前用不到~
  但是我看不懂后面的以5分钟为一单位的总时间累计部分~要如何修改?

2.当离开此页面时~要如何取得当下阅读总时数~让我记录到数据库中?
  请高手给点提示~

程序代码:

<script>
  var isSaved=0; //是否已储存
  var iSeconds=0;  //阅读秒数
  //var iPeriodSec = 300; //?秒后显示提示讯息
  var iSaveCheckSec=30;
  var iGoingSec= 0; //重复读取秒数
  var myVar;
  var cTime;
      EnableTimer();
    function EnableTimer()
    {
        myVar = setInterval(function(){Timer()},1000);
    }
    function SuspendTimer()
    {
      clearInterval(myVar);
    }                     
    function Timer()
    {         
        iSeconds=iSeconds+1;
      var minutes = Math.floor(iSeconds  / 60);
      var secs = iSeconds - (minutes * 60);
      var sTime;  //阅读时间
          if (secs < 10){
            secs = "0" + secs
        }
        if (minutes < 10){
          minutes = "0" + minutes
        }         
        sTime= minutes + ":" + secs
        document.getElementById("TimerText").innerHTML=sTime;
        //if (iSeconds % iPeriodSec ==0){
        //    SuspendTimer();
        //  AddTimeOut();
        //  DxPCConfirm.Show();            
        //}           
      };
      function CancelTimeOut()
      {
          clearTimeout(cTime);
      };
      function AddTimeOut()
      {
          cTime=setTimeout(function(){ SaveReadingTime('Normal');} ,30000);
      };
      function SaveReadingTime(sMode)
      {
          if (isSaved==0 && iSeconds>=iSaveCheckSec){            
            if (sMode=='Normal'){     
              isSaved=1;  
            DxCBSaveReadTime.PerformCallback(sMode + '|' + (iSeconds-iGoingSec));
          }else if(sMode=='OnGoing'){
              isSaved=0;  
            iGoingSec =iGoingSec + iPeriodSec;
            DxCBSaveReadTime.PerformCallback(sMode + '|' + iPeriodSec);
          }
        }
      };
      window.onbeforeunload  = function (evt) {
          SuspendTimer();
           SaveReadingTime('Normal');
      }         
</script>
<div>
    <table>
        <tr>
            <td>
                  <span id="ctl00_ContentPlaceHolder_Label1">阅读时间:</span>
            </td>
            <td id="TimerText">
               
            </td>
        </tr>
     </table>
</div>



3 回复
#2
wube2017-06-19 16:03
就差一步〜写回数据库〜这部分就完成了〜
只有本站会员才能查看附件,请 登录
#3
wube2017-06-20 10:20
昨天发现VS有Timer控件,或许可以拿来替代看不懂的JS Code。
#4
林月儿2017-06-20 13:20
显示动态时间的话
程序代码:

js:
    setInterval(function(){
                var newDate=new Date();
                var year=newDate.getFullYear();
                var month=newDate.getMonth();
                var day=newDate.getDay();
                var hours=newDate.getHours();
                var minuts=newDate.getMinutes();
                var seconds=newDate.getSeconds();
                $("#t").html(year+"-"+month+"-"+day+" "+hours+":"+minuts+":"+seconds);
            },200);

html:

    <span id="t"></span>
1