2019-06-12 時(shí)鐘,倒計(jì)時(shí),變量的作用,封閉函數(shù),用變量的方式定義函數(shù),閉包,閉包存循環(huán)的索引值,閉包做私有變量計(jì)數(shù)器,閉包做選項(xiàng)卡,跳轉(zhuǎn)的源頁面,獲取地址欄參數(shù),Math,

時(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容