JS范疇
js屬于web前端開發(fā)代碼,html+css建立一個(gè)靜態(tài)頁(yè)面趾徽,js為頁(yè)面增加動(dòng)態(tài)效果奶陈。
JS功能
1、增加頁(yè)面動(dòng)態(tài)效果(如:下拉菜單附较、圖片輪播吃粒、信息滾動(dòng)等)
2、實(shí)現(xiàn)頁(yè)面與用戶的實(shí)時(shí)拒课、動(dòng)態(tài)交互(如用戶登陸徐勃、注冊(cè)等)
JS-變量
1事示、變量含義
編程中的變量,指的是用來存儲(chǔ)某種/某些數(shù)值的存儲(chǔ)器僻肖,可以看成是一個(gè)盒子肖爵,可以裝不同種類的東西。
2臀脏、變量命名
為什么要命名:為了區(qū)分不同盒子
命名規(guī)則(在半角劝堪、英文狀態(tài)下輸入):
1、必須以字母揉稚、下劃線或美元符號(hào)開頭秒啦,后面可以跟字母、數(shù)字搀玖、下劃線和美元符號(hào)余境。
2、區(qū)分大小寫灌诅,比如A與a代表不同變量芳来。
3、不允許以JavaScript關(guān)鍵字和保留字做變量名猜拾。
3即舌、變量的聲明
使用變量先要找到變量,即聲明挎袜,在編程中用var代表聲明(即找變量的動(dòng)作)
var:是js的關(guān)鍵字侥涵,作用是聲明變量,并為變量準(zhǔn)備位置(內(nèi)存)宋雏。
語(yǔ)法: var 變量名----(聲明一個(gè)變量)
? ? ? ? ? ? var 變量1,變量2,變量3-------(聲明多個(gè)變量)
備注:變量可以不聲明直接用,但為了規(guī)范务豺,需先聲明后使用磨总。
4、變量賦值
變量的作用是存儲(chǔ)內(nèi)容笼沥。
如何存儲(chǔ):用 = ?蚪燕,具體語(yǔ)法有兩種,
? ? ? ? ? ? ? 一種是: var myname=5奔浅,讀法:給變量myname賦值馆纳,值為5
? ? ? ? ? ? ?另一種是:var myname
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? myname=5
存儲(chǔ)什么:變量可以存儲(chǔ)任何東西,如數(shù)值汹桦、字符串鲁驶、布爾值(true/false)等
? ? ? ? ? ? ? ? var num1=123 ? //123是數(shù)值
? ? ? ? ? ? ? ?var num2="一二三" ? //一二三是字符串,需加引號(hào)
? ? ? ? ? ? ? var num3=true ? //布爾值
5舞骆、表達(dá)式
表達(dá)式可以包含常數(shù)或變量钥弯,指具有一定的值径荔,用操作符把常數(shù)和變量鏈接起來的代數(shù)式。
數(shù)值表達(dá)式:2.5*3 ?-----僅有常數(shù)
? ? ? ? ? ? ? ? ? ? ?num-2.5*3-------包含變量和常數(shù)
字符串表達(dá)式:"I"+"Love"+"You"----僅有常數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? "super"+char------包含常數(shù)和變量
布爾值表達(dá)式:2>3-------僅含常數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ?num==5------含變量和常數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ?num<6--------含變量和常數(shù)
6脆霎、操作符
操作符是在js中指定一定動(dòng)作的符號(hào)总处,如賦值操作符(=)、算術(shù)操作符(+睛蛛、-鹦马、*、/)忆肾、比較操作符(>荸频、>=、<难菌、<=)试溯、邏輯操作符(&&、||郊酒、S鼋省)
"+"操作符
"+"可以代表加法,也可以鏈接兩個(gè)字符串
mystring="java"+"script"+myname
算術(shù)操作符:自加一燎窘,自減一(++,--)
++和--是算術(shù)操作符摹闽,非常常用。它的用法:
mynum=10
mynum++ ? ?//mynum的值變?yōu)?1
mynum-- ? ? //mynum的值又變?yōu)?0
mynum++使mynum值在原基礎(chǔ)上加1褐健,mynum--使mynum值在原基礎(chǔ)上減1付鹿。
等同于語(yǔ)句:
mynum=mynum+1
mynum=mynum-1
比較操作符
在95>90中,95蚜迅、90是操作數(shù)舵匾,>是比較操作符,輸出結(jié)果為true(真)或false(假)
js的比較操作符含義如下表:
例如:
var a=5
var b=9
document.write(a<b) //輸出結(jié)果為true
documeny.write(a>=b) //輸出結(jié)果為false
document.write(a!=b) //輸出結(jié)果為true
document.write(a==b) //輸出結(jié)果為false
邏輯操作符
&&:?讀法:與/并且
&&的操作符值
if(A&&B)
{ ? ? ?}
||:讀法:或
||的操作符值
!:讀法:非/不是
侦另!的操作符值
var c=!(a>b)---!后需加括號(hào)
操作符的優(yōu)先級(jí)
算術(shù)操作符優(yōu)先級(jí):乘除>加減,如果要改變數(shù)序,需加括號(hào)
如:jq= ((numa + 30) / (2 - numb)) * 3;
四類操作符的優(yōu)先級(jí):
算術(shù)操作符 >比較操作符 >邏輯操作符> "="賦值符號(hào)
JS-數(shù)組
背景:一個(gè)變量只能存儲(chǔ)一個(gè)內(nèi)容淋肾,如果存儲(chǔ)的數(shù)值較多硫麻,使用多個(gè)變量會(huì)很麻煩。這時(shí)可以用數(shù)組解決這個(gè)問題樊卓,一個(gè)變量存儲(chǔ)一個(gè)數(shù)組拿愧,一個(gè)數(shù)組存儲(chǔ)多個(gè)數(shù)值。
數(shù)組是值的集合碌尔,每個(gè)值都有一個(gè)索引號(hào)浇辜,從0開始;相應(yīng)的每個(gè)索引都有一個(gè)值唾戚,根據(jù)需要添加更多值柳洋。
1、創(chuàng)建數(shù)組
創(chuàng)建新數(shù)組并賦至一個(gè)變量叹坦,語(yǔ)法:
var myarray=new Array()
創(chuàng)建數(shù)組時(shí)還可以給數(shù)組指定長(zhǎng)度:
var array=new Array(8) ?//創(chuàng)建數(shù)組熊镣,存儲(chǔ)8個(gè)數(shù)據(jù)
注意:
1.創(chuàng)建的新數(shù)組是空數(shù)組,沒有值募书,如輸出绪囱,則顯示undefined。
2.雖然創(chuàng)建數(shù)組時(shí)莹捡,指定了長(zhǎng)度鬼吵,但實(shí)際上數(shù)組都是變長(zhǎng)的,也就是說即使指定了長(zhǎng)度為8篮赢,仍然可以將元素存儲(chǔ)在規(guī)定長(zhǎng)度以外齿椅。
2、數(shù)組賦值
數(shù)組存儲(chǔ)的數(shù)據(jù)可以是任意類型(數(shù)字启泣、字符涣脚、布爾值等)
數(shù)組賦值方法有三種:
第一種:
var myarr=new Array();
myarr[0]=66;
myarr[1]=80;
myarr[2]=76;
myarr[3]=56;
第二種:
var myarr=new Array(66;80;76;56);
第三種:
var myarr=[66;80;76;56];? ////直接輸入一個(gè)數(shù)組(稱 “字面量數(shù)組”)
向數(shù)組中增加新元素
要給已有的數(shù)組增加新元素,只需要使用下一個(gè)未用的索引號(hào)寥茫,任何時(shí)刻都可以不斷地向數(shù)組中增加元素遣蚀。
例如:myarr[4]=92;
呼叫/使用數(shù)組元素
要使用數(shù)組中某一個(gè)元素的值,只需要調(diào)用變量名+索引號(hào)即可
如上例坠敷,要查詢第三個(gè)數(shù),即為myarr[2]
數(shù)組中元素的數(shù)量=數(shù)組長(zhǎng)度
如果想要獲取數(shù)組的長(zhǎng)度射富,使用語(yǔ)法:變量名.length?
注意:因?yàn)閿?shù)組的索引總是由0開始膝迎,所以一個(gè)數(shù)組的上下限分別是:0和length-1。如數(shù)組的長(zhǎng)度是5胰耗,數(shù)組的上下限分別是0和4限次。
例如:
var arr=[55,32,5,90,60,98,76,54];//包含8個(gè)數(shù)值的數(shù)組
arrdocument.write(arr.length);//顯示數(shù)組長(zhǎng)度8
document.write(arr[7]);//顯示第8個(gè)元素的值54
同時(shí),JavaScript數(shù)組的length屬性是可變的,這一點(diǎn)需要特別注意:
一種:arr.length=10;//增大數(shù)組的長(zhǎng)度
? ? ? ? ? ?document.write(arr.length);//數(shù)組長(zhǎng)度已經(jīng)變?yōu)?0
另一種:數(shù)組隨元素的增加卖漫,長(zhǎng)度也會(huì)改變费尽,如下:
? ? ? ? ? ? ? var arr=[98,76,54,56,76];// 包含5個(gè)數(shù)值的數(shù)組
? ? ? ? ? ? ? document.write(arr.length);//顯示數(shù)組的長(zhǎng)度5
? ? ? ? ? ? ? arr[15]=34;//增加元素,使用索引為15,賦值為34
? ? ? ? ? ? ? alert(arr.length);//顯示數(shù)組的長(zhǎng)度16
3羊始、二維數(shù)組
一維數(shù)組旱幼,我們看成一組盒子,每個(gè)盒子只能放一個(gè)內(nèi)容:
一維數(shù)組的表示: myarray[ ]
二維數(shù)組突委,我們看成一組盒子柏卤,不過每個(gè)盒子里還可以放多個(gè)盒子:
二維數(shù)組的表示: myarray[ ][ ]
注意:二維數(shù)組的兩個(gè)維度的索引值也是從0開始,兩個(gè)維度的最后一個(gè)索引值為長(zhǎng)度-1匀油。
二維數(shù)組的定義方法一:
var myarr=new Array();? //先聲明一維
for(var i=0;i<2;i++){? //一維長(zhǎng)度為2
myarr[i]=new Array();? //再聲明二維
for(var j=0;j<3;j++){? //二維長(zhǎng)度為3
myarr[i][j]=i+j;? // 賦值缘缚,每個(gè)數(shù)組元素的值為i+j
}
}
將上面二維數(shù)組,用表格的方式表示:
2.二維數(shù)組的定義方法二
var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3]]
3.?賦值
myarr[0][1]=5;//將5的值傳入到數(shù)組中敌蚜,覆蓋原有值桥滨。
說明:myarr[0][1] ,0?表示表的行,1表示表的列弛车。
JS-流程控制語(yǔ)句
1齐媒、if句(做判斷)
含義:if語(yǔ)句是基于條件成立才執(zhí)行相應(yīng)代碼時(shí)使用的語(yǔ)句。
語(yǔ)法:if(條件)
? ? ? ? ? ? ?{ 條件成立時(shí)執(zhí)行代碼}
注意:if小寫帅韧,大寫字母(IF)會(huì)出錯(cuò)里初!
例子:假設(shè)你應(yīng)聘web前端技術(shù)開發(fā)崗位,如果你會(huì)HTML技術(shù)忽舟,你面試成功双妨,歡迎加入公司。代碼表示如下:
<script type="text/javascript">
var mycarrer="HTML"
if(mycarrer=="HTML")
{
document.write("你面試成功叮阅,歡迎加入公司")
}
</script>
2刁品、if...else語(yǔ)句(二選一)
含義:if...else是在指定的條件成立時(shí)執(zhí)行代碼,在條件不成立時(shí)執(zhí)行else后面的代碼浩姥。
語(yǔ)法:if( 條件 )
? ? ? ? ? ? { 條件成立時(shí)執(zhí)行的代碼 ?}
? ? ? ? ? ?else
? ? ? ? ? ? ?{ 條件不成立時(shí)執(zhí)行的代碼 ?}
例子:假設(shè)你應(yīng)聘web前端技術(shù)開發(fā)崗位挑随,如果你會(huì)HTML技術(shù),你面試成功勒叠,歡迎加入公司兜挨,否則你面試不成功,不能加入公司眯分。
<script type=text/javascript>
var mycarrer="HTML"
if(mycarrer="HTML")
{
document.write("你面試成功拌汇,歡迎加入公司。")
}
else
{"你面試不成功弊决,不能加入公司噪舀。"
}
3魁淳、if...else嵌套句(多重判斷)
應(yīng)用:要在多組語(yǔ)句中選擇一組來執(zhí)行,使用if..else嵌套語(yǔ)句与倡。
語(yǔ)法:if(條件1)
{條件1成立時(shí)執(zhí)行的代碼}
? else if(條件2)
{條件2成立時(shí)執(zhí)行的代碼}
...
else if(條件n)
{條件n成立時(shí)執(zhí)行的代碼}
else
{條件1界逛、2至n不成立時(shí)執(zhí)行的代碼}
4、switch語(yǔ)句(多重選擇)
當(dāng)有很多種選項(xiàng)的時(shí)候纺座,switch比if else使用更方便息拜。
語(yǔ)法:
switch(表達(dá)式)
{
case值1:
? 執(zhí)行代碼塊1;
? ?break;
?case值2:
? 執(zhí)行代碼塊2
? break;
...
? case值n:
?執(zhí)行代碼塊n;
break;
defaut:
與 case值1 、 case值2...case值n 不同時(shí)執(zhí)行的代碼
}
語(yǔ)法說明:
Switch必須賦初始值比驻,值與每個(gè)case值匹配该溯。滿足執(zhí)行該 case 后的所有語(yǔ)句,并用break語(yǔ)句來阻止運(yùn)行下一個(gè)case别惦。如所有case值都不匹配狈茉,執(zhí)行default后的語(yǔ)句。
例子:
var myweek =3;//myweek表示星期幾變量
switch(myweek)
{
case 1:
case 2:
document.write("學(xué)習(xí)理念知識(shí)");
break;
case 3:
case 4:
document.write("到企業(yè)實(shí)踐");
break;
case 5:
document.write("總結(jié)經(jīng)驗(yàn)");
break;
default:
document.write("周六掸掸、日休息和娛樂");
}
5氯庆、for循環(huán)
很多事情不只是做一次,要重復(fù)做扰付。這些事情堤撵,我們使用循環(huán)語(yǔ)句來完成,循環(huán)語(yǔ)句羽莺,就是重復(fù)執(zhí)行一段代碼实昨。
for語(yǔ)句結(jié)構(gòu):
for(初始化變量;循環(huán)條件;循環(huán)迭代)
{
循環(huán)語(yǔ)句
}
例子:假如,一個(gè)盒子里有6個(gè)球盐固,我們每次取一個(gè)荒给,重復(fù)從盒中取出球,直到球取完為止刁卜。
<script type="text/javascript">
var num1=1;
for(num=1;num<=6;num++)
{
document.write("取出第"+num+"個(gè)球")
}
</script>
結(jié)果:
執(zhí)行思路:
6志电、while循環(huán)(反反復(fù)復(fù))
和for循環(huán)有相同功能的還有while循環(huán), while循環(huán)重復(fù)執(zhí)行一段代碼,直到某個(gè)條件不再滿足蛔趴。
while語(yǔ)句結(jié)構(gòu):
while(判斷條件)
{
循環(huán)語(yǔ)句
}
例子:
使用while循環(huán)挑辆,完成從盒子里取球的動(dòng)作,每次取一個(gè)孝情,共6個(gè)球鱼蝉。
<script type="text/javascript">
var num=0; ?//初始化值
while(num<=6) //條件判斷
{
document.write("取出第"+num+"個(gè)球<br/>");
num=num+1; //條件值更新
}
</script>
do...while循環(huán)(來來回回)
do while結(jié)構(gòu)的基本原理和while結(jié)構(gòu)是基本相同的,但是它保證循環(huán)體至少被執(zhí)行一次箫荡。因?yàn)樗窍葓?zhí)行代碼魁亦,后判斷條件,如果條件為真菲茬,繼續(xù)循環(huán)吉挣。
do...while語(yǔ)句結(jié)構(gòu):
do
{
循環(huán)語(yǔ)句
}
while(判斷條件)
例子:我們?cè)囍敵?個(gè)數(shù)字。
<script type="text/javascript">
var num=1
do
{
document.write("數(shù)值為"+num+"<br/>");
num++;
}
while(num<=5)
</script>
執(zhí)行結(jié)果:
7婉弹、退出循環(huán)
在while睬魂、for、do...while循環(huán)中使用break語(yǔ)句退出當(dāng)前循環(huán)镀赌,直接執(zhí)行后面的代碼氯哮。
格式為:
for(初始條件;判斷條件;循環(huán)后條件值更新)
{
if(特殊情況)??
? ? ?{break;}?
? ? ? 循環(huán)代碼
}
當(dāng)遇到特殊情況的時(shí)候,循環(huán)就會(huì)立即結(jié)束商佛。
7喉钢、continue繼續(xù)循環(huán)
continue的作用是僅僅跳過本次循環(huán),而整個(gè)循環(huán)體繼續(xù)執(zhí)行良姆。
語(yǔ)句結(jié)構(gòu):
for(初始條件;判斷條件;循環(huán)后條件值更新)
{
if(特殊情況)
{continue;}
循環(huán)代碼
}
JS-函數(shù)
函數(shù)的作用:將完成特定功能的代碼寫到一個(gè)函數(shù)中肠虽,直接調(diào)用這個(gè)函數(shù),就可以省去輸入大量代碼的麻煩玛追。
1税课、定義函數(shù):
function 函數(shù)名
{
函數(shù)體
}
function定義函數(shù)的關(guān)鍵字,“函數(shù)名”你為函數(shù)取的名字痊剖,“函數(shù)體”替換為完成特定功能的代碼韩玩。
例子:
<script type="text/javascript">
function add2(){
sum=3+2;
alert(sum)
}
</script>
2陆馁、函數(shù)調(diào)用
函數(shù)定義好后找颓,是不能自動(dòng)執(zhí)行的,需要調(diào)用它叮贩,直接在需要的位置寫函數(shù)名击狮。
第一種情況:在<script>標(biāo)簽內(nèi)調(diào)用
<script type="text/javascript">
? ?function add2()
{
sum=1+1
alert(sum)
}
add2() ?//調(diào)用函數(shù),直接寫函數(shù)名
</script>
第二種情況:在HTML文件中調(diào)用妇汗,如通過點(diǎn)擊按鈕后調(diào)用定義好的函數(shù)帘不。
<htmL>
<head>
<script type="text/javascript">
function add2()
{
sum = 5 + 6;
alert(sum);
}
</script>
</head>
<form>
<input type="button" value="click it" onclick="add2()"> ////按鈕,onclick點(diǎn)擊事件,直接寫函數(shù)名
</form>
</body>
</html>
事件
1杨箭、含義:javascript創(chuàng)建動(dòng)態(tài)頁(yè)面寞焙,事件是可以被JavaScript 偵測(cè)到的行為。 網(wǎng)頁(yè)中的每個(gè)元素都可以產(chǎn)生某些可以觸發(fā) JavaScript 函數(shù)或程序的事件互婿。
比如說捣郊,當(dāng)用戶單擊按鈕或者提交表單數(shù)據(jù)時(shí),就發(fā)生一個(gè)鼠標(biāo)單擊(onclick)事件慈参,需要瀏覽器做出處理呛牲,返回給用戶一個(gè)結(jié)果。
主要事件表:
2驮配、鼠標(biāo)單擊事件(onclick)
onclick是鼠標(biāo)單擊事件娘扩,當(dāng)在網(wǎng)頁(yè)上單擊鼠標(biāo)時(shí)着茸,就會(huì)發(fā)生該事件。同時(shí)onclick事件調(diào)用的程序塊就會(huì)被執(zhí)行琐旁,通常與按鈕一起使用涮阔。
例子:比如,我們單擊按鈕時(shí)灰殴,觸發(fā) onclick 事件敬特,并調(diào)用兩個(gè)數(shù)和的函數(shù)add2()。代碼如下:
<html>
<head>
? ?<script type="text/javascript">
? ? ? ? ? ? function add2(){
? ? ? ? ? ? ? ? ?var numa,numb,sum;?
? ? ? ? ? ? ? ? ? numa=6;
? ? ? ? ? ? ? ? ? ?numb=8;
? ? ? ? ? ? ? ? ? ? sum=numa+numb;
? ? ? ? ? ? ? ? ? ? ?document.write("兩數(shù)和為:"+sum);}
</script>
</head>
<body>
? <form>
? ? <input name="button" type="button" value="點(diǎn)擊提交">
? ? onclick="add2()"
</form>
</body>
</html>
鼠標(biāo)經(jīng)過事件(onmouseover)
含義:鼠標(biāo)經(jīng)過事件牺陶,當(dāng)鼠標(biāo)移到一個(gè)對(duì)象上時(shí)伟阔,該對(duì)象就觸發(fā)onmouseover事件料睛,并執(zhí)行onmouseover事件調(diào)用的程序疮方。
現(xiàn)實(shí)鼠標(biāo)經(jīng)過"確定"按鈕時(shí),觸發(fā)onmouseover事件溪厘,調(diào)用函數(shù)info()狮鸭,彈出消息框娃承,代碼如下:
<script type="text/javascript">
? function info(){
? comfirm("請(qǐng)輸入姓名后,再點(diǎn)擊確定怕篷!");}
?</script>
?</head>
?<body>
?<form>
密碼:<input name="password" type="text">?
? ? ?<input name="button" type="button" value="確定" onmouseover="info()">
? ? ? </form>
? ? ?</body> ? ??
3历筝、鼠標(biāo)移開事件
含義:鼠標(biāo)移開事件,當(dāng)鼠標(biāo)移開當(dāng)前對(duì)象時(shí)廊谓,執(zhí)行onmouseout調(diào)用的程序梳猪。
<script type="text/javascript">
function message(){
alert("不要移開,點(diǎn)擊后進(jìn)行慕課網(wǎng)!"); }
</script>
</head>
<form>
<a href="www.imoc.com" onmouseover="message()">點(diǎn)擊我</a>
4蒸痹、光標(biāo)聚焦事件(onfocus)
當(dāng)網(wǎng)頁(yè)中的對(duì)象獲得聚點(diǎn)時(shí)春弥,執(zhí)行onfocus調(diào)用的程序就會(huì)被執(zhí)行。
如下代碼, 當(dāng)將光標(biāo)移到文本框內(nèi)時(shí)叠荠,即焦點(diǎn)在文本框內(nèi)匿沛,觸發(fā)onfocus 事件,并調(diào)用函數(shù)message()榛鼎。
5逃呼、失焦事件(onblur)
onblur事件與onfocus是相對(duì)事件,當(dāng)光標(biāo)離開當(dāng)前獲得聚焦對(duì)象的時(shí)候者娱,觸發(fā)onblur事件抡笼,同時(shí)執(zhí)行被調(diào)用的程序。
如下代碼, 網(wǎng)頁(yè)中有用戶和密碼兩個(gè)文本框黄鳍。當(dāng)前光標(biāo)在用戶文本框內(nèi)時(shí)(即焦點(diǎn)在文本框)推姻,在光標(biāo)離開該文本框后(即失焦時(shí)),觸發(fā)onblur事件框沟,并調(diào)用函數(shù)message()藏古。
6增炭、內(nèi)容選中事件(onselect)
選中事件,當(dāng)文本框或者文本域中的文字被選中時(shí)拧晕,觸發(fā)onselect事件弟跑,同時(shí)調(diào)用的程序就會(huì)被執(zhí)行。
如下代碼,當(dāng)選中用戶文本框內(nèi)的文字時(shí)防症,觸發(fā)onselect 事件,并調(diào)用函數(shù)message()哎甲。
7蔫敲、文本框內(nèi)容改變事件
通過改變文本框的內(nèi)容來觸發(fā)onchange事件,同時(shí)執(zhí)行被調(diào)用的程序炭玫。
如下代碼,當(dāng)用戶將文本框內(nèi)的文字改變后奈嘿,彈出對(duì)話框“您改變了文本內(nèi)容!”吞加。
8裙犹、加載事件
事件會(huì)在頁(yè)面加載完成后,立即發(fā)生衔憨,同時(shí)執(zhí)行被調(diào)用的程序叶圃。
注意:1.?加載頁(yè)面時(shí),觸發(fā)onload事件践图,事件寫在標(biāo)簽內(nèi)掺冠。
2. 此節(jié)的加載頁(yè)面,可理解為打開一個(gè)新頁(yè)面時(shí)码党。
如下代碼,當(dāng)加載一個(gè)新頁(yè)面時(shí)德崭,彈出對(duì)話框“加載中,請(qǐng)稍等…”揖盘。
9眉厨、卸載事件(onunload)
當(dāng)用戶退出頁(yè)面時(shí)(頁(yè)面關(guān)閉、頁(yè)面刷新等)兽狭,觸發(fā)onUnload事件憾股,同時(shí)執(zhí)行被調(diào)用的程序。
注意:不同瀏覽器對(duì)onunload事件支持不同箕慧。
如下代碼,當(dāng)退出頁(yè)面時(shí)荔燎,彈出對(duì)話框“您確定離開該網(wǎng)頁(yè)嗎?”销钝。
Javascript內(nèi)置對(duì)象
JavaScript 中的所有事物都是對(duì)象有咨,如:字符串、數(shù)值蒸健、數(shù)組座享、函數(shù)等婉商,每個(gè)對(duì)象帶有屬性和方法。
對(duì)象的屬性:反映該對(duì)象某些特定的性質(zhì)的渣叛,如:字符串的長(zhǎng)度丈秩、圖像的長(zhǎng)寬等;
對(duì)象的方法:能夠在對(duì)象上執(zhí)行的動(dòng)作淳衙。例如蘑秽,表單的“提交”(Submit),時(shí)間的“獲取”(getYear)等箫攀;
JavaScript 提供多個(gè)內(nèi)建對(duì)象肠牲,比如 String、Date靴跛、Array 等等缀雳,使用對(duì)象前先定義,如下使用數(shù)組對(duì)象:
var objectName =new Array();//使用new關(guān)鍵字定義對(duì)象或者var objectName =[];
訪問對(duì)象屬性的語(yǔ)法:
objectName.propertyName
1梢睛、Date 日期對(duì)象
日期對(duì)象可以儲(chǔ)存任意一個(gè)日期肥印,并且可以精確到毫秒數(shù)(1/1000 秒)。
定義一個(gè)日期對(duì)象:
var Udate=new Date();
注意:使用關(guān)鍵字new绝葡,Date()的首字母必須大寫深碱。
使 Udate 成為日期對(duì)象,并且已有初始值:當(dāng)前時(shí)間(當(dāng)前電腦系統(tǒng)時(shí)間)藏畅。
如果要自定義初始值莹痢,可以用以下方法:
var d = new Date(2012, 10, 1);//2012年10月1日
var d = new Date('Oct 1, 2012');//2012年10月1日
我們最好使用下面介紹的“方法”來嚴(yán)格定義時(shí)間。
訪問方法語(yǔ)法:“<日期對(duì)象>.<方法>”
Date對(duì)象中處理時(shí)間和日期的常用方法:
1.1返回/設(shè)置年份方法(get/setFullYear)
get/setFullYear:返回或設(shè)置年份墓赴,用四位數(shù)表示竞膳。
var mydate=new Date();//當(dāng)前時(shí)間2014年3月6日
document.write(mydate+"");//輸出當(dāng)前時(shí)間
document.write(mydate.getFullYear()+"");//輸出當(dāng)前年份
mydate.setFullYear(81);//設(shè)置年份document.write(mydate+"");//輸出年份被設(shè)定為 0081年。
注意:不同瀏覽器诫硕, mydate.setFullYear(81)結(jié)果不同坦辟,年份被設(shè)定為 0081或81兩種情況。
結(jié)果:
Thu Mar 06 2014 10:57:47 GMT+0800
2014
Thu Mar 06 0081 10:57:47 GMT+0800
注意:
1.結(jié)果格式依次為:星期章办、月锉走、日、年藕届、時(shí)挪蹭、分、秒休偶、時(shí)區(qū)梁厉。(火狐瀏覽器)
2. 不同瀏覽器,時(shí)間格式有差異。
1.2 返回星期方法(getDay)
getDay()返回星期词顾,返回的是0-6的數(shù)字八秃,0 表示星期天。如果要返回相對(duì)應(yīng)“星期”肉盹,通過數(shù)組完成昔驱,代碼如下:
<script type="text/javascript">
var mydate=new Date();//定義日期對(duì)象
var weekday=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];//定義數(shù)組對(duì)象,給每個(gè)數(shù)組項(xiàng)賦值
var mynum=mydate.getDay();//返回值存儲(chǔ)在變量mynum中
document.write(mydate.getDay());//輸出getDay()獲取值
document.write("今天是:"+ weekday[mynum]);//輸出星期幾
注意:以上代碼是在2014年3月7日,星期五運(yùn)行上忍。
結(jié)果:
5
今天是:星期五
1.3 返回/設(shè)置時(shí)間方法
get/setTime()返回/設(shè)置時(shí)間骤肛,單位毫秒數(shù),計(jì)算從 1970 年 1 月 1 日零時(shí)到日期對(duì)象所指的日期的毫秒數(shù)窍蓝。
如果將目前日期對(duì)象的時(shí)間推遲1小時(shí)腋颠,代碼如下:
<script type="text/javascript">
var mydate=new Date()
document.write("當(dāng)前時(shí)間:"+mydate+"</br>");
mydate.setTime(mydate.getTime() + 60 * 60 * 1000);
document.write("推遲一小時(shí)時(shí)間:" + mydate);
</script>
1.4 String字符串對(duì)象
定義字符串的方法就是直接賦值。比如:
var mystr = "I love JavaScript!"
定義mystr字符串后它抱,我們就可以訪問它的屬性和方法。
訪問字符串對(duì)象的屬性length:
stringObject.length;返回該字符串的長(zhǎng)度朴艰。
var mystr="Hello World!";
var myl=mystr.length;
以上代碼執(zhí)行后观蓄,myl 的值將是:12
訪問字符串對(duì)象的方法:
使用 String 對(duì)象的 toUpperCase() 方法來將字符串小寫字母轉(zhuǎn)換為大寫:
var mystr="Hello world!";
var mynum=mystr.toUpperCase();
以上代碼執(zhí)行后,mynum 的值是:HELLO WORLD!
1.5 返回指定位置的字符:charAt()
charAt() 方法可返回指定位置的字符祠墅。返回的字符是長(zhǎng)度為 1 的字符串侮穿。
語(yǔ)法:
stringObject.charAt(index)
參數(shù)說明:
注意:1.字符串中第一個(gè)字符的下標(biāo)是 0。最后一個(gè)字符的下標(biāo)為字符串長(zhǎng)度減一(string.length-1)毁嗦。
2.如果參數(shù) index 不在 0 與 string.length-1 之間亲茅,該方法將返回一個(gè)空字符串。
如:在字符串 "I love JavaScript!" 中狗准,返回位置2的字符:
<script type="text/javascript">
var mystr="I love JavaScript!"
document.write(mystr.charAt(2));
</script>
注意:一個(gè)空格也算一個(gè)字符克锣。
以上代碼的運(yùn)行結(jié)果:
L
1.6 返回指定的字符串首次出現(xiàn)的位置
indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。
語(yǔ)法
stringObject.indexOf(substring, startpos)
參數(shù)說明:
說明:
1.該方法將從頭到尾地檢索字符串 stringObject腔长,看它是否含有子串 substring袭祟。
2.可選參數(shù),從stringObject的startpos位置開始查找substring捞附,如果沒有此參數(shù)將從stringObject的開始位置查找巾乳。
3.如果找到一個(gè) substring,則返回 substring 的第一次出現(xiàn)的位置鸟召。stringObject 中的字符位置是從 0 開始的胆绊。
注意:1.indexOf() 方法區(qū)分大小寫。
2.如果要檢索的字符串值沒有出現(xiàn)欧募,則該方法返回 -1压状。
例如: 對(duì) "I love JavaScript!" 字符串內(nèi)進(jìn)行不同的檢索:
<script type="text/javascript">?
var str="I love JavaScript!"
document.write(str.indexOf("I") + "<br/>");
document.write(str.indexOf("v") + "<br/>");
document.write(str.indexOf("v",8));
</script>
以上代碼的輸出:
0
4
9
1.6 字符串分割 split()
知識(shí)講解:
split() 方法將字符串分割為字符串?dāng)?shù)組,并返回此數(shù)組跟继。
語(yǔ)法:
stringObject.split(separator,limit)
參數(shù)說明:
注意:如果把空字符串 ("") 用作 separator何缓,那么 stringObject 中的每個(gè)字符之間都會(huì)被分割肢础。
我們將按照不同的方式來分割字符串:
使用指定符號(hào)分割字符串,代碼如下:
var mystr = "www.imooc.com";
document.write(mystr.split(".")+"");
document.write(mystr.split(".", 2)+"");
運(yùn)行結(jié)果:
www,imooc,com
www,imooc
將字符串分割為字符碌廓,代碼如下:
document.write(mystr.split("")+"");
document.write(mystr.split("", 5));
運(yùn)行結(jié)果:
w,w,w,.,i,m,o,o,c,.,c,o,m
w,w,w,.,i
1.7 提取字符串substring()
substring() 方法用于提取字符串中介于兩個(gè)指定下標(biāo)之間的字符传轰。
語(yǔ)法:
stringObject.substring(startPos,stopPos)
參數(shù)說明:
注意:
1. 返回的內(nèi)容是從?start開始(包含start位置的字符)到?stop-1 處的所有字符,其長(zhǎng)度為?stop?減start谷婆。
如果只有startPos,沒有stopPos慨蛙,則指的是提取從startPos到最后的所有的字符。
2. 如果參數(shù) start 與 stop 相等纪挎,那么該方法返回的就是一個(gè)空串(即長(zhǎng)度為 0 的字符串)期贫。
3. 如果 start 比 stop 大,那么該方法在提取子串之前會(huì)先交換這兩個(gè)參數(shù)异袄。
使用 substring() 從字符串中提取字符串通砍,代碼如下:
<script type="text/javascript">
var mystr="I love JavaScript";
document.write(mystr.substring(7));
document.write(mystr.substring(2,6));
</script>
運(yùn)行結(jié)果:
JavaScript
love
1.8 提取指定數(shù)目的字符substr()
substr() 方法從字符串中提取從 startPos位置開始的指定數(shù)目的字符串。
語(yǔ)法:
stringObject.substr(startPos,length)
參數(shù)說明:
注意:如果參數(shù)startPos是負(fù)數(shù)烤蜕,從字符串的尾部開始算起的位置封孙。也就是說,-1 指字符串中最后一個(gè)字符讽营,-2 指倒數(shù)第二個(gè)字符虎忌,以此類推。
如果startPos為負(fù)數(shù)且絕對(duì)值大于字符串長(zhǎng)度橱鹏,startPos為0膜蠢。
使用 substr() 從字符串中提取一些字符,代碼如下:
<script type="text/javascript">
var mystr="I love JavaScript!";
document.write(mystr.substr(7));
document.write(mystr.substr(2,4));
</script>
運(yùn)行結(jié)果:
JavaScript!
love
1.7 Math對(duì)象
Math對(duì)象莉兰,提供對(duì)數(shù)據(jù)的數(shù)學(xué)計(jì)算挑围。
使用 Math 的屬性和方法,代碼如下:
<script type="text/javascript">
var mypi=Math.PI;
var myabs=Math.abs(-15);
document.write(mypi);
document.write(myabs);
</script>
運(yùn)行結(jié)果:
3.141592653589793
15
注意:Math 對(duì)象是一個(gè)固有的對(duì)象糖荒,無需創(chuàng)建它贪惹,直接把 Math 作為對(duì)象使用就可以調(diào)用其所有屬性和方法。這是它與Date,String對(duì)象的區(qū)別寂嘉。
Math 對(duì)象屬性
Math 對(duì)象方法
1.8 向上取整
ceil() 方法可對(duì)一個(gè)數(shù)進(jìn)行向上取整奏瞬。
語(yǔ)法:
Math.ceil(x)
參數(shù)說明:
注意:它返回的是大于或等于x,并且與x最接近的整數(shù)泉孩。
我們將把 ceil() 方法運(yùn)用到不同的數(shù)字上硼端,代碼如下:
<script type="text/javascript">
document.write(Math.ceil(0.8) + "<br/>")
document.write(Math.ceil(6.3) + "<br/>")
document.write(Math.ceil(5) + "<br/>")
document.write(Math.ceil(3.5) + "<br/>")
document.write(Math.ceil(-5.1) + "<br/>")
document.write(Math.ceil(-5.9))
</script>
運(yùn)行結(jié)果:
1
7
5
4
-5
-5
1.9 向下取整floor()
floor() 方法可對(duì)一個(gè)數(shù)進(jìn)行向下取整。
語(yǔ)法:
Math.floor(x)
參數(shù)說明:
注意:返回的是小于或等于x寓搬,并且與 x 最接近的整數(shù)珍昨。
我們將在不同的數(shù)字上使用 floor() 方法,代碼如下:
<script type="text/javascript">
document.write(Math.floor(0.8)+ "<br/>")
document.write(Math.floor(6.3)+ "<br/>")
document.write(Math.floor(5)+ "<br/>")
document.write(Math.floor(3.5)+ "<br/>")
document.write(Math.floor(-5.1)+ "<br>")
document.write(Math.floor(-5.9))
<script>
運(yùn)行結(jié)果:
0
6
5
3
-6
-6
1.10 四舍五入 round()
round() 方法可把一個(gè)數(shù)字四舍五入為最接近的整數(shù)。
語(yǔ)法:
Math.round(x)
參數(shù)說明:
注意:
1. 返回與 x 最接近的整數(shù)镣典。
2. 對(duì)于 0.5兔毙,該方法將進(jìn)行上舍入。(5.5 將舍入為 6)
3.?如果x 與兩側(cè)整數(shù)同等接近兄春,則結(jié)果接近 +∞方向的數(shù)字值 澎剥。(如?-5.5 將舍入為 -5; -5.52?將舍入為 -6),如下圖:
把不同的數(shù)舍入為最接近的整數(shù),代碼如下:
<script type="text/javascript">
document.write(Math.round(1.6)+ "<br/>");??
document.write(Math.round(2.5)+ "<br/>");??
document.write(Math.round(0.49)+ "<br/>");??
document.write(Math.round(-6.4)+ "<br/>");??
document.write(Math.round(-6.6));
運(yùn)行結(jié)果:
2
3
0
-6
-7
1.11 隨機(jī)數(shù)
random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1)之間的一個(gè)隨機(jī)數(shù)。
語(yǔ)法:
Math.random();
注意:返回一個(gè)大于或等于 0 但小于 1 的符號(hào)為正的數(shù)字值赶舆。
我們?nèi)〉媒橛?0 到 1 之間的一個(gè)隨機(jī)數(shù)哑姚,代碼如下:
<script type="text/javascript">
document.write(Math.random());
</script>
運(yùn)行結(jié)果:
0.190305486195328
注意:因?yàn)槭请S機(jī)數(shù),所以每次運(yùn)行結(jié)果不一樣芜茵,但是0 ~ 1的數(shù)值叙量。
獲得0 ~ 10之間的隨機(jī)數(shù),代碼如下:
<script type="text/javascript">
document.write((Math.random())*10);
</script>
運(yùn)行結(jié)果:
8.72153625893887
2九串、?數(shù)組對(duì)象 Array
數(shù)組對(duì)象是一個(gè)對(duì)象的集合绞佩,里邊的對(duì)象可以是不同類型的。數(shù)組的每一個(gè)成員對(duì)象都有一個(gè)“下標(biāo)”猪钮,用來表示它在數(shù)組中的位置品山,是從零開始的
數(shù)組定義的方法:
1. 定義了一個(gè)空數(shù)組:
var? 數(shù)組名= new Array();
2、定義時(shí)指定有n個(gè)空元素的數(shù)組:
var 數(shù)組名 =new Array(n);
3躬贡、定義數(shù)組的時(shí)候谆奥,直接初始化數(shù)據(jù):
var? 數(shù)組名 = [<元素1>, <元素2>, <元素3>...];
我們定義myArray數(shù)組眼坏,并賦值拂玻,代碼如下:
說明:定義了一個(gè)數(shù)組 myArray,里邊的元素是:myArray[0] = 2; myArray[1] = 8; myArray[2] = 6宰译。
數(shù)組元素使用:
數(shù)組名[下標(biāo)] = 值;
注意: 數(shù)組的下標(biāo)用方括號(hào)括起來檐蚜,從0開始。
數(shù)組屬性:
length 用法:<數(shù)組對(duì)象>.length沿侈;返回:數(shù)組的長(zhǎng)度闯第,即數(shù)組里有多少個(gè)元素。它等于數(shù)組里最后一個(gè)元素的下標(biāo)加一缀拭。
數(shù)組方法:
2.1 數(shù)組連接concat()
concat() 方法用于連接兩個(gè)或多個(gè)數(shù)組咳短。此方法返回一個(gè)新數(shù)組,不改變?cè)瓉淼臄?shù)組蛛淋。
語(yǔ)法
arrayObject.concat(array1,array2,...,arrayN)
參數(shù)說明:
注意:該方法不會(huì)改變現(xiàn)有的數(shù)組咙好,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。
我們創(chuàng)建一個(gè)數(shù)組褐荷,將把 concat() 中的參數(shù)連接到數(shù)組 myarr 中勾效,代碼如下:
<script type="text/javascript">
var mya = new Array(3);
mya[0] = "1";
mya[1] = "2";
mya[2] = "3";
document.write(mya.concat(4,5)+"
");
document.write(mya);
</script>
運(yùn)行結(jié)果:
1,2,3,4,5
1,2,3
我們創(chuàng)建了三個(gè)數(shù)組,然后使用 concat() 把它們連接起來,代碼如下:
<script type="text/javascript">
var mya1= new Array("hello!")
var mya2= new Array("I","love");
var mya3= new Array("JavaScript","!");
var mya4=mya1.concat(mya2,mya3);
document.write(mya4);
</script>
運(yùn)行結(jié)果:
hello!,I,love,JavaScript,!
2.2 指定分隔符連接數(shù)組元素join()
join()方法用于把數(shù)組中的所有元素放入一個(gè)字符串层宫。元素是通過指定的分隔符進(jìn)行分隔的杨伙。
語(yǔ)法:
arrayObject.join(分隔符)
參數(shù)說明:
注意:返回一個(gè)字符串,該字符串把數(shù)組中的各個(gè)元素串起來萌腿,用<分隔符>置于元素與元素之間限匣。這個(gè)方法不影響數(shù)組原本的內(nèi)容。 我們使用join()方法哮奇,將數(shù)組的所有元素放入一個(gè)字符串中膛腐,代碼如下:
<script type="text/javascript">
var myarr = new Array(3)
myarr[0] = "I";
myarr[1] = "love";
myarr[2] = "JavaScript";
document.write(myarr.join("."));------分隔符加雙引號(hào)
運(yùn)行結(jié)果:
I.love.JavaScript
2.3 顛倒數(shù)組元素順序reverse()
reverse() 方法用于顛倒數(shù)組中元素的順序。
語(yǔ)法:
arrayObject.reverse()
注意:該方法會(huì)改變?cè)瓉淼臄?shù)組鼎俘,而不會(huì)創(chuàng)建新的數(shù)組哲身。
定義數(shù)組myarr并賦值,然后顛倒其元素的順序:
<script type="text/javascript">
var myarr = new Array(3)??
myarr[0] = "1"?
?myarr[1] = "2"??
myarr[2] = "3"??
document.write(myarr + "<br/>")??
document.write(myarr.reverse())
運(yùn)行結(jié)果:
1,2,3
3,2,1
2.4 選定元素slice()
slice() 方法可從已有的數(shù)組中返回選定的元素贸伐。
語(yǔ)法
arrayObject.slice(start,end)
參數(shù)說明:
1.返回一個(gè)新的數(shù)組勘天,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
2. 該方法并不會(huì)修改數(shù)組捉邢,而是返回一個(gè)子數(shù)組脯丝。
注意:
1. 可使用負(fù)值從數(shù)組的尾部選取元素。
2.如果 end 未被規(guī)定伏伐,那么 slice() 方法會(huì)選取從 start 到數(shù)組結(jié)尾的所有元素宠进。
3. String.slice() 與 Array.slice() 相似。
我們將創(chuàng)建一個(gè)新數(shù)組藐翎,然后從其中選取的元素材蹬,代碼如下:
<script type="text/javascript">
var myarr = new Array(1,2,3,4,5,6);
document.write(myarr + "<br/>");
document.write(myarr.slice(2,4) + "<br/>");
document.write(myarr);
運(yùn)行結(jié)果:
1,2,3,4,5,6
3,4
1,2,3,4,5,6
3. 數(shù)組排序
sort()方法使數(shù)組中的元素按照一定的順序排列。
語(yǔ)法:
arrayObject.sort(方法函數(shù))
參數(shù)說明:
1.如果不指定<方法函數(shù)>吝镣,則按unicode碼順序排列堤器。
2.如果指定<方法函數(shù)>,則按<方法函數(shù)>所指定的排序方法排序末贾。
myArray.sort(sortMethod);
注意:該函數(shù)要比較兩個(gè)值闸溃,然后返回一個(gè)用于說明這兩個(gè)值的相對(duì)順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b拱撵,其返回值如下:
若返回值<=-1辉川,則表示 A 在排序后的序列中出現(xiàn)在 B 之前。
若返回值>-1 && <1拴测,則表示 A 和 B 具有相同的排序順序乓旗。
若返回值>=1,則表示 A 在排序后的序列中出現(xiàn)在 B 之后昼扛。
1.使用sort()將數(shù)組進(jìn)行排序寸齐,代碼如下:
<script type="text/javascript">
var myarr1 = new Array("Hello","John","love","JavaScript");
var myarr2 = new Array("80","16","50","6","100","1");
document.write(myarr1.sort()+"<br/>");
document.write(myarr2.sort());
運(yùn)行結(jié)果:
Hello,JavaScript,John,love
1,100,16,50,6,80
注意:上面的代碼沒有按照數(shù)值的大小對(duì)數(shù)字進(jìn)行排序欲诺。
2.如要實(shí)現(xiàn)這一點(diǎn),就必須使用一個(gè)排序函數(shù)渺鹦,代碼如下:
<script type="text/javascript">
function sortNum(a,b) {
return a - b;
//升序扰法,如降序,把“a - b”該成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr + "<br/>");
document.write(myarr.sort(sortNum));
運(yùn)行結(jié)果:
80,16,50,6,100,1
1,6,16,50,80,100
瀏覽器對(duì)象
1毅厚、window對(duì)象
window對(duì)象是BOM的核心塞颁,window對(duì)象指當(dāng)前的瀏覽器窗口。
window對(duì)象方法:
2吸耿、JavaScript 計(jì)時(shí)器
在JavaScript中祠锣,我們可以在設(shè)定的時(shí)間間隔之后來執(zhí)行代碼,而不是在函數(shù)被調(diào)用后立即執(zhí)行咽安。
計(jì)時(shí)器類型:
一次性計(jì)時(shí)器:僅在指定的延遲時(shí)間之后觸發(fā)一次伴网。
間隔性觸發(fā)計(jì)時(shí)器:每隔一定的時(shí)間間隔就觸發(fā)一次。
計(jì)時(shí)器方法:
3妆棒、計(jì)時(shí)器setInterval()
在執(zhí)行時(shí),從載入頁(yè)面后每隔指定的時(shí)間執(zhí)行代碼澡腾。
語(yǔ)法:
setInterval(代碼,交互時(shí)間);
參數(shù)說明:
1. 代碼:要調(diào)用的函數(shù)或要執(zhí)行的代碼串。
2. 交互時(shí)間:周期性執(zhí)行或調(diào)用表達(dá)式之間的時(shí)間間隔糕珊,以毫秒計(jì)(1s=1000ms)动分。
返回值:
一個(gè)可以傳遞給 clearInterval() 從而取消對(duì)"代碼"的周期性執(zhí)行的值。
調(diào)用函數(shù)格式(假設(shè)有一個(gè)clock()函數(shù)):
setInterval("clock()",1000)
或
setInterval(clock,1000)
我們?cè)O(shè)置一個(gè)計(jì)時(shí)器红选,每隔100毫秒調(diào)用clock()函數(shù)澜公,并將時(shí)間顯示出來,代碼如下: