风到这里就是粘
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>自己看完总结吧
倒计时效果
55592 学习 · 253 问题