時(shí)鐘
window.onload = function(){
var oBox = document.getElementById('box');
function timeGo(){
var now = new Date();
// alert(now);//彈出美式時(shí)間:Wed Jun 20 2018 15:27:13 GMT+0800 (中國標(biāo)準(zhǔn)時(shí)間)
var year = now.getFullYear();//2018年
var month = now.getMonth() + 1;//6月彈出5//范圍0-11
var date = now.getDate();//20號
var week = now.getDay();//3//星期幾,西半球時(shí)間,范圍0-6,星期日為一周的第一天,為0
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
// alert(hour + ":" + minute + ":" + second);//15:33:9
oBox.innerHTML = '當(dāng)前時(shí)間是:' + year + '年' + toDouble(month) + '月' + toDouble(date) + '日 ' + toWeek(week) + ' ' + toDouble(hour) + ":" + toDouble(minute) + ":" + toDouble(second);
}
timeGo();
setInterval(timeGo, 1000);? //刷新時(shí)間 ?
}
//此函數(shù)將星期的數(shù)字轉(zhuǎn)為漢字表示
function toWeek(num){
switch(num){
case 0:
return '星期天';
break;
case 1:
return '星期一';
break;
case 2:
return '星期二';
break;
case 3:
return '星期三';
break;
case 4:
return '星期四';
break;
case 5:
return '星期五';
break;
case 6:
return '星期六';
break;
}
}
//此函數(shù)將不足兩位的數(shù)字前面補(bǔ)0
function toDouble(num){
if(num < 10){
return '0' + num;
}else{
return num;
}
}
倒計(jì)時(shí)
window.onload = function(){
//活動(dòng)第二天要將頁面下線,直接跳轉(zhuǎn)到其它頁面,不會走后面的代碼了
// window.location.;
var oDiv = document.getElementById('div1');
function timeLeft(){
//實(shí)際開發(fā)中此時(shí)間從服務(wù)器獲取,避免客戶端調(diào)整時(shí)間
var now = new Date();
var future = new Date(2018,5,20,16,30,20);
// alert(future - now);//彈出與當(dāng)前時(shí)間相差的毫秒數(shù):12469935436
var milli = parseInt((future - now)/1000);
//活動(dòng)當(dāng)天頁面下線,避免倒計(jì)時(shí)到點(diǎn)后繼續(xù)計(jì)負(fù)時(shí)
// if(milli <= 0){
// //頁面跳轉(zhuǎn),不執(zhí)行下面的代碼了
// window.location.;
// }
var day = parseInt(milli / 86400);
var hour = parseInt(milli % 86400 / 3600);
var minute = parseInt(((milli % 86400) % 3600) / 60);
var second = milli % 60;
oDiv.innerHTML = '距離2018年11月12日00時(shí)00分00秒還有' + day + '天' + toDouble(hour) + '時(shí)' + toDouble(minute) + '分' + toDouble(second) + '秒';
}
timeLeft();
setInterval(timeLeft, 1000);
}
function toDouble(num){
if(num < 10){
return '0' + num;
}else{
return num;
}
}
變量的作用域
全局變量:函數(shù)外部定義的變量,函數(shù)內(nèi)部和外部都可以訪問,它的值可以共享
局部變量:函數(shù)內(nèi)部定義的變量,函數(shù)內(nèi)部可以訪問,外部無法訪問。函數(shù)內(nèi)部訪問變量時(shí),先在內(nèi)部查找是否有此變量,如果有,就使用內(nèi)部變量,如果沒有,就去外部查找
函數(shù)內(nèi)部如果不用'var'關(guān)鍵字定義變量,變量可能會變成全局變量,如果用嚴(yán)格模式解析會報(bào)錯(cuò)
var a = 12;
function aa(){
// var a = 5;
var b = 7;
}
封閉函數(shù)
/*原來的寫法
function myAlert(){
var str = '歡迎訪問我的主頁';
alert(str);
}
myAlert();*/
var str = function(){
alert('test');
}
//封閉函數(shù)的一般寫法
//封閉函數(shù)定義:(function(){……})()
/*
;;(function(){
var str = '歡迎訪問我的主頁';
alert(str);
})();//最后的()表示馬上執(zhí)行
*/
//封閉函數(shù)其他的寫法:在匿名函數(shù)前加“!”或者“~”,之后加“()”
~function(){
var str = '歡迎訪問我的主頁';
alert(str);
}();
用變量的方式定義函數(shù)

閉包
閉包的本質(zhì)就是函數(shù)嵌套,就是在函數(shù)里面定義函數(shù),
內(nèi)部函數(shù)可以引用外部函數(shù)的參數(shù)和變量
參數(shù)和變量不會被垃圾回收機(jī)制給回收
閉包的用途:可以存循環(huán)的索引值、做私有變量計(jì)數(shù)器
*/
/*
//閉包的一般寫法
function aa(b){
var a = 12;
function bb(){
alert(a);
alert(b);
}
return bb;
}
var cc = aa(24);*/
//閉包的封閉函數(shù)寫法
var cc = (function(b){
var a = 12;
function bb(){
alert(a);
alert(b);
}
return bb;
})(24);
cc();
/*
//只能調(diào)用一次的閉包
(function(b){
var a = 12;
function bb(){
alert(a);
alert(b);
}
return bb;
})(24)();
*/
閉包存循環(huán)的索引值
li{
height: 30px;
background-color: gold;
margin-bottom: 10px;
}
//閉包的用途:存循環(huán)的索引值
window.onload = function(){
var aLi = document.getElementsByTagName('li');
// alert(aLi.length);//8
for(var i=0; i<aLi.length; i++){
/*
aLi[i].onclick = function(){
alert(i);//每個(gè)li都彈出8,因?yàn)辄c(diǎn)擊時(shí)循環(huán)已完畢,i最后為8
}
*/
(function(k){//這里的k是形參
aLi[k].onclick = function(){
alert(k);//彈出每個(gè)li的索引值
}
})(i);//這里的i是實(shí)參
}
}
閉包做私有變量計(jì)數(shù)器

閉包做選項(xiàng)卡
.btns{
width: 500px;
height: 50px;
}
/*選項(xiàng)卡的樣式*/
.btns input{
width: 100px;
height: 50px;
background-color: #ddd;/*默認(rèn)灰色*/
color: #666;
border: 0px;
}
/*被選中的選項(xiàng)卡的樣式*/
.btns input.cur{
background-color: gold;
}
/*內(nèi)容區(qū)的樣式*/
.contents div{
width: 500px;
height: 300px;
background-color: gold;
display: none;/*默認(rèn)隱藏*/
line-height: 300px;
text-align: center;
}
/*被選中的內(nèi)容區(qū)的樣式*/
.contents div.active{
display: block;
}
//閉包做選項(xiàng)卡
window.onload = function(){
var aBtn = document.getElementById('btns').getElementsByTagName('input');
var aCon = document.getElementById('contents').getElementsByTagName('div');
// alert(aCon.length);
//循環(huán)所有的選項(xiàng)卡按鈕
for(var i=0; i<aBtn.length; i++){
(function(i){
//給每個(gè)選項(xiàng)卡按鈕添加點(diǎn)擊事件
aBtn[i].onclick = function(){
//遍歷所有選項(xiàng)卡按鈕
for(var j=0; j<aBtn.length; j++){
//將每個(gè)選項(xiàng)卡按鈕都設(shè)為灰色
aBtn[j].className = '';
//將每個(gè)內(nèi)容區(qū)都隱藏
aCon[j].className = '';
}
//this代表當(dāng)前點(diǎn)擊的Button對象
this.className = 'cur';//當(dāng)前點(diǎn)擊的按鈕為金色
// alert(i);//不加閉包時(shí),不管點(diǎn)哪個(gè)按鈕,i都等于3
//加閉包保存了索引值才有效
aCon[i].className = 'active';//當(dāng)前點(diǎn)擊的按鈕對應(yīng)的內(nèi)容顯示
}
})(i);
}
}

獲取地址欄參數(shù)

Math
// var num = Math.random();
// alert(num);//彈出0-1之間的隨機(jī)數(shù)
var a = 10;
var b = 20;
// var num = Math.random()*(b-a)+a;
// alert(num);//彈出10-20之間的隨機(jī)數(shù)
var arr = [];
for(var i=0; i<20; i++){
// var num = Math.floor(Math.random()*(b-a)+a);//向下取整,10-19
var num = Math.floor(Math.random()*(b-a + 1)+a);//向下取整,10-20
arr.push(num);//生成一個(gè)數(shù)就放進(jìn)數(shù)組
}
alert(arr);//17,20,20,11,11,19,17,16,10,11,16,11,18,13,13,11,17,14,19,19