jQuery之timer不刷新,没有报错信息;增加调试信息显示timer只执行一次;
2018-01-10 13:00
239 查看
表现:timer不刷新,没有报错信息;增加调试信息显示timer只执行一次;
原因:
没有弄清楚,执行一次的原因,感觉一次都不应该执行;
单步调试:
执行到下图中的86行时,直接进入MAIN.shou_time中,没有检测这个函数的格式是否正确,等该函数执行结束,进入jQuery.timer.js中,执行jQuery.timer对应的function,如下图中的第二张图所示,此时对callback进行了检测;
显示callback为undefined,之后,执行到图中的最后一行,直接return false,就没有执行下去了,但是还是不清楚为何执行了一次;
下图是语句正确的情况下,单步调试的情况:
此时,callback为function(),经15行判断后,继续向下执行;
通过以上测试,
执行一次应该是因为js执行的时候,读取到MAIN.show_time后就进入MAIN.show_time中执行了;
可能写Java留下的固定思维吧,很难理解这种情况,等以后更理解js的执行原理的时候,再回头看吧;
以下为源代码:
注:源代码是邵发的Java课程中的代码,特此说明;
原因:
var timer = $.timer (1000, MAIN.show_time,false); //var timer = $.timer (1000, MAIN.show_time(),false); //上边注释的这句是错误的,因为调用回调函数的时候,调用的是MAIN的一个属性,不是方法,不需要加括号;
没有弄清楚,执行一次的原因,感觉一次都不应该执行;
单步调试:
执行到下图中的86行时,直接进入MAIN.shou_time中,没有检测这个函数的格式是否正确,等该函数执行结束,进入jQuery.timer.js中,执行jQuery.timer对应的function,如下图中的第二张图所示,此时对callback进行了检测;
显示callback为undefined,之后,执行到图中的最后一行,直接return false,就没有执行下去了,但是还是不清楚为何执行了一次;
下图是语句正确的情况下,单步调试的情况:
此时,callback为function(),经15行判断后,继续向下执行;
通过以上测试,
执行一次应该是因为js执行的时候,读取到MAIN.show_time后就进入MAIN.show_time中执行了;
可能写Java留下的固定思维吧,很难理解这种情况,等以后更理解js的执行原理的时候,再回头看吧;
以下为源代码:
注:源代码是邵发的Java课程中的代码,特此说明;
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'test2.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <!-- jquery & bootstrap --> <script src="jquery/jquery.js"></script> <script src="jquery/jquery.timer.js"></script> <link rel="stylesheet" href="bootstrap/css/bootstrap.css"> <script src="bootstrap/js/bootstrap.min.js"></script> <!-- 通用javascript --> <script src="common/AfUtility.js"></script> <style> #test-panel .time { width: 80%; margin: 100px auto auto auto; border: 1px solid #888; border-radius: 4px; padding: 10px; } </style> </head> <body> <div id="test-panel"> <div class="time"> </div> </div> <script> var MAIN = {}; MAIN.panel = $("#test-panel"); MAIN.time_str = function() { var now=new Date(); var year=now.getFullYear(); //年 var month=now.getMonth()+1; //月 var day=now.getDate(); //日 var hh=now.getHours(); //时 var mm=now.getMinutes(); //分 var sc=now.getSeconds(); //秒 var curTime = ""; curTime += year; curTime += "-"; curTime += month<10?'0'+month:month; curTime += "-"; curTime += day<10?'0'+day:day; curTime += " "; curTime += hh<10?'0'+hh:hh; curTime += ":"; curTime += mm<10?'0'+mm:mm; curTime += ":"; curTime += sc<10?'0'+sc:sc; return curTime; } /* 显示当前时间 */ MAIN.show_time = function() { var tm = MAIN.time_str(); $(".time",MAIN.panel).html(tm); console.log("1"); console.log(tm); }; $("#test-panel").ready(function(){ var timer = $.timer (1000, MAIN.show_time,false); //var timer = $.timer (1000, MAIN.show_time(),false); //上边注释的这句是错误的,因为调用回调函数的时候,调用的是MAIN的一个属性,不是方法,不需要加括号; }); </script> </body> </html>
相关文章推荐
- 怎么增加eclipse调试时没有显示的机型
- Windows程序中增加consle窗显示printf输出调试信息的一种方法
- top 执行一次、显示所有进程信息
- top 执行一次、显示所有进程信息
- 周期性执行代码,显示一个时钟,这个时钟显示的是当前的年月日和小时,每秒钟刷新一次
- Windows程序中增加consle窗显示printf输出调试信息的一种方法
- 在Setting中增加一项用来执行shell脚本,将脚本打印信息显示在Alertdialog中。
- Window输出窗口运行时调试信息中没有显示调用的dll情况
- C# winfrom下即时显示输出信息 ,比如for循环不等执行完一次输出
- $("input[name=choose]").attr("checked", true);只执行一次,再次点击没有作用
- JQuery.Ajax之错误调试帮助信息
- jquery 时间戳转成日期格式 , 后台返回时间格式(后台没有进行时间格式转换) ,前端转换成日期格式显示。
- jQuery鼠标悬停显示提示信息窗口
- MFC调用win32窗口显示调试信息,使用AllocConsole 函数
- Eclipse 调试时,出现错误闪退,但是控制台没有打印错误信息
- [ectouch 调试必备] 显示出错误信息
- 解决LogCat为什么没有显示信息或者一开始有显示但很快就没有了
- 黄聪:PHP调试显示所有错误信息
- JQuery.Ajax之错误调试帮助信息
- JQuery.Ajax之错误调试帮助信息