风到这里就是粘
2017-08-15 16:53
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>按格式动态显示时间:2017年8月15日 星期二 16:28:09</title> <style type="text/css"> #show{ width:1000px;height:20px;background:pink; } </style> </head> <body> <div id="show">显示时间的位置</div> <script type="text/javascript"> window.onload = function() { //让时间动起来 setInterval(showTime, 500); //刷新时间<1s,思考为什么?只要小于1000能被1000整除的数字都是可以的,比如100,200,500,1000。 //封装一个函数,来检查时分秒 function checkTime(i) { // if (i < 10) { // i = "0" + i; // } else { // return i; // } //写法二:i=(i<10)?("0"+i):i;错误i未定义,为什么? return (i<10)?("0"+i):i; } function showTime() { //时间是静态的 var now = new Date(); var month = now.getMonth() + 1; var weekends = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]; var day = weekends[now.getDay()]; // 写法二:var day="星期"+"日一二三四五六".charAt(now.getDay()); document.getElementById("show").innerHTML = now.getFullYear() + "年" + month + "月" + now.getDate() + "日" + " " + day + " " + checkTime(now.getHours()) + ":" + checkTime(now.getMinutes()) + ":" + checkTime(now.getSeconds()); } } </script> </body> </html>
楼上那位朋友说的是对的,在这个函数里,i只是一个代表你将要传递给函数的参数,实际上你要传递给函数的参数是m和s。i只是代表一个被复制过来的参数值,并不是一个实际存在的变量。
如果你要写成i=(i<10)?("0"+i):i;那这个函数第一句你要先定义一个变量var i=i;这里代表的是你将你要传递给函数的参数先赋值给变量i。
//封装一个函数,来检查时分秒
function checkTime(i) {
// if (i < 10) {
// i = "0" + i;
// } else {
// return i;
// }
/*写法一:if语句后边不用再写一个else,直接把return i写在if语句外边,否则当m和s小于10的时候会报错。
if(i<10){
i="0"+i;
}
return i;
*/
//写法二:i=(i<10)?("0"+i):i;错误i未定义,为什么?
//写法二:var i=i; i=(i<10)?("0"+i):i; return i; 这么改就对了,但是实际上反而写复杂了,代码应该尽量写得简洁易懂。便于维护,写得太复杂会影响网页性能,看起来也不美观哈。
return (i<10)?("0"+i):i;
}
另外这个写法是三元表达式的写法,确实挺好用,你可以百度下。
这样写的话,不会报错,只是会有些麻烦。其实感觉是因为这个函数需要返回一个值,不写return的话函数默认返回一个undefined。
这里的undefined应该是未定义的值吧;毕竟在function(i){}里,i是只是他的一个参数,i=****最终还是一个值,你必须得让它return返回给引用他的函数,emmmm。。我是这么理解的。
return i= i<10?"0"+i:i; 这样是可以的。
(萌新,勿喷,,,)
<head> <meta charset="UTF-8"> <title>按格式动态显示时间:2017年8月15日 星期二 16:28:09</title> <style type="text/css"> #show{ width:1000px;height:20px;background:pink; } </style> </head> <body> <div id="show">显示时间的位置</div> <script type="text/javascript"> window.onload = function() { //让时间动起来 // setInterval(showTime, 500); //刷新时间<1s,思考为什么?只要小于1000能被1000整除的数字都是可以的,比如100,200,500,1000。 setInterval(showTime,1000);//1000ms是1s 。。。。。。秒!不是500毫秒!!! //封装一个函数,来检查时分秒 function checkTime(i) { // return (i<10)?("0"+i):i; //为什么要加括号!这个是三目运算符 return i<10 ? "0"+i : i; } // 补: // 不调用怎么执行下面! showTime(); function showTime() { //时间是静态的 (错!) //获取本地时间 var now = new Date(); // 年 var year = now.getFullYear(); // 月 var month = now.getMonth() + 1; // 天 var day = now.getDate(); // 时 var hour = now.getHours(); // 分 var minutes=now.getMinutes(); // 秒 var seconds=now.getSeconds(); // 星期 var week = now.getDay(); // var weekends = ["星期一","星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]; //星期是从0开始计!0代表星期日,1代表星期一,以此类推。 var weekends = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六']; var thisWeek = weekends[week]; // 简单点不是更好的? document.getElementById("show").innerHTML = year + "年" + month + "月" + day + "日" + " " + thisWeek + " " + checkTime(hour) + ":" + checkTime(minutes) + ":" + checkTime(seconds); } } </script> </body> </html>
自己看完总结吧
倒计时效果
55613 学习 · 242 问题