JS范疇
js屬于web前端開發(fā)代碼,html+css建立一個靜態(tài)頁面,js為頁面增加動態(tài)效果。
JS功能
1、增加頁面動態(tài)效果(如:下拉菜單、圖片輪播、信息滾動等)
2、實現(xiàn)頁面與用戶的實時、動態(tài)交互(如用戶登陸、注冊等)
JS-變量
1、變量含義
編程中的變量,指的是用來存儲某種/某些數(shù)值的存儲器,可以看成是一個盒子,可以裝不同種類的東西。
2、變量命名
為什么要命名:為了區(qū)分不同盒子
命名規(guī)則(在半角、英文狀態(tài)下輸入):
1、必須以字母、下劃線或美元符號開頭,后面可以跟字母、數(shù)字、下劃線和美元符號。
2、區(qū)分大小寫,比如A與a代表不同變量。
3、不允許以JavaScript關(guān)鍵字和保留字做變量名。

3、變量的聲明
使用變量先要找到變量,即聲明,在編程中用var代表聲明(即找變量的動作)
var:是js的關(guān)鍵字,作用是聲明變量,并為變量準(zhǔn)備位置(內(nèi)存)。
語法: var 變量名----(聲明一個變量)
? ? ? ? ? ? var 變量1,變量2,變量3-------(聲明多個變量)
備注:變量可以不聲明直接用,但為了規(guī)范,需先聲明后使用。
4、變量賦值
變量的作用是存儲內(nèi)容。
如何存儲:用 = ?,具體語法有兩種,
? ? ? ? ? ? ? 一種是: var myname=5,讀法:給變量myname賦值,值為5
? ? ? ? ? ? ?另一種是:var myname
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? myname=5
存儲什么:變量可以存儲任何東西,如數(shù)值、字符串、布爾值(true/false)等
? ? ? ? ? ? ? ? var num1=123 ? //123是數(shù)值
? ? ? ? ? ? ? ?var num2="一二三" ? //一二三是字符串,需加引號
? ? ? ? ? ? ? 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中指定一定動作的符號,如賦值操作符(=)、算術(shù)操作符(+、-、*、/)、比較操作符(>、>=、<、<=)、邏輯操作符(&&、||、!)
"+"操作符
"+"可以代表加法,也可以鏈接兩個字符串
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。
等同于語句:
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)---!后需加括號
操作符的優(yōu)先級
算術(shù)操作符優(yōu)先級:乘除>加減,如果要改變數(shù)序,需加括號
如:jq= ((numa + 30) / (2 - numb)) * 3;
四類操作符的優(yōu)先級:
算術(shù)操作符 >比較操作符 >邏輯操作符> "="賦值符號
JS-數(shù)組
背景:一個變量只能存儲一個內(nèi)容,如果存儲的數(shù)值較多,使用多個變量會很麻煩。這時可以用數(shù)組解決這個問題,一個變量存儲一個數(shù)組,一個數(shù)組存儲多個數(shù)值。

數(shù)組是值的集合,每個值都有一個索引號,從0開始;相應(yīng)的每個索引都有一個值,根據(jù)需要添加更多值。
1、創(chuàng)建數(shù)組
創(chuàng)建新數(shù)組并賦至一個變量,語法:
var myarray=new Array()

創(chuàng)建數(shù)組時還可以給數(shù)組指定長度:
var array=new Array(8) ?//創(chuàng)建數(shù)組,存儲8個數(shù)據(jù)
注意:
1.創(chuàng)建的新數(shù)組是空數(shù)組,沒有值,如輸出,則顯示undefined。
2.雖然創(chuàng)建數(shù)組時,指定了長度,但實際上數(shù)組都是變長的,也就是說即使指定了長度為8,仍然可以將元素存儲在規(guī)定長度以外。
2、數(shù)組賦值
數(shù)組存儲的數(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];? ////直接輸入一個數(shù)組(稱 “字面量數(shù)組”)
向數(shù)組中增加新元素
要給已有的數(shù)組增加新元素,只需要使用下一個未用的索引號,任何時刻都可以不斷地向數(shù)組中增加元素。
例如:myarr[4]=92;
呼叫/使用數(shù)組元素
要使用數(shù)組中某一個元素的值,只需要調(diào)用變量名+索引號即可
如上例,要查詢第三個數(shù),即為myarr[2]
數(shù)組中元素的數(shù)量=數(shù)組長度
如果想要獲取數(shù)組的長度,使用語法:變量名.length?
注意:因為數(shù)組的索引總是由0開始,所以一個數(shù)組的上下限分別是:0和length-1。如數(shù)組的長度是5,數(shù)組的上下限分別是0和4。
例如:
var arr=[55,32,5,90,60,98,76,54];//包含8個數(shù)值的數(shù)組
arrdocument.write(arr.length);//顯示數(shù)組長度8
document.write(arr[7]);//顯示第8個元素的值54
同時,JavaScript數(shù)組的length屬性是可變的,這一點(diǎn)需要特別注意:
一種:arr.length=10;//增大數(shù)組的長度
? ? ? ? ? ?document.write(arr.length);//數(shù)組長度已經(jīng)變?yōu)?0
另一種:數(shù)組隨元素的增加,長度也會改變,如下:
? ? ? ? ? ? ? var arr=[98,76,54,56,76];// 包含5個數(shù)值的數(shù)組
? ? ? ? ? ? ? document.write(arr.length);//顯示數(shù)組的長度5
? ? ? ? ? ? ? arr[15]=34;//增加元素,使用索引為15,賦值為34
? ? ? ? ? ? ? alert(arr.length);//顯示數(shù)組的長度16
3、二維數(shù)組
一維數(shù)組,我們看成一組盒子,每個盒子只能放一個內(nèi)容:
一維數(shù)組的表示: myarray[ ]
二維數(shù)組,我們看成一組盒子,不過每個盒子里還可以放多個盒子:
二維數(shù)組的表示: myarray[ ][ ]
注意:二維數(shù)組的兩個維度的索引值也是從0開始,兩個維度的最后一個索引值為長度-1。
二維數(shù)組的定義方法一:
var myarr=new Array();? //先聲明一維
for(var i=0;i<2;i++){? //一維長度為2
myarr[i]=new Array();? //再聲明二維
for(var j=0;j<3;j++){? //二維長度為3
myarr[i][j]=i+j;? // 賦值,每個數(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-流程控制語句
1、if句(做判斷)
含義:if語句是基于條件成立才執(zhí)行相應(yīng)代碼時使用的語句。
語法:if(條件)
? ? ? ? ? ? ?{ 條件成立時執(zhí)行代碼}
注意:if小寫,大寫字母(IF)會出錯!
例子:假設(shè)你應(yīng)聘web前端技術(shù)開發(fā)崗位,如果你會HTML技術(shù),你面試成功,歡迎加入公司。代碼表示如下:
<script type="text/javascript">
var mycarrer="HTML"
if(mycarrer=="HTML")
{
document.write("你面試成功,歡迎加入公司")
}
</script>
2、if...else語句(二選一)
含義:if...else是在指定的條件成立時執(zhí)行代碼,在條件不成立時執(zhí)行else后面的代碼。
語法:if( 條件 )
? ? ? ? ? ? { 條件成立時執(zhí)行的代碼 ?}
? ? ? ? ? ?else
? ? ? ? ? ? ?{ 條件不成立時執(zhí)行的代碼 ?}
例子:假設(shè)你應(yīng)聘web前端技術(shù)開發(fā)崗位,如果你會HTML技術(shù),你面試成功,歡迎加入公司,否則你面試不成功,不能加入公司。
<script type=text/javascript>
var mycarrer="HTML"
if(mycarrer="HTML")
{
document.write("你面試成功,歡迎加入公司。")
}
else
{"你面試不成功,不能加入公司。"
}
3、if...else嵌套句(多重判斷)
應(yīng)用:要在多組語句中選擇一組來執(zhí)行,使用if..else嵌套語句。
語法:if(條件1)
{條件1成立時執(zhí)行的代碼}
? else if(條件2)
{條件2成立時執(zhí)行的代碼}
...
else if(條件n)
{條件n成立時執(zhí)行的代碼}
else
{條件1、2至n不成立時執(zhí)行的代碼}
4、switch語句(多重選擇)
當(dāng)有很多種選項的時候,switch比if else使用更方便。
語法:
switch(表達(dá)式)
{
case值1:
? 執(zhí)行代碼塊1;
? ?break;
?case值2:
? 執(zhí)行代碼塊2
? break;
...
? case值n:
?執(zhí)行代碼塊n;
break;
defaut:
與 case值1 、 case值2...case值n 不同時執(zhí)行的代碼
}
語法說明:
Switch必須賦初始值,值與每個case值匹配。滿足執(zhí)行該 case 后的所有語句,并用break語句來阻止運(yùn)行下一個case。如所有case值都不匹配,執(zhí)行default后的語句。
例子:
var myweek =3;//myweek表示星期幾變量
switch(myweek)
{
case 1:
case 2:
document.write("學(xué)習(xí)理念知識");
break;
case 3:
case 4:
document.write("到企業(yè)實踐");
break;
case 5:
document.write("總結(jié)經(jīng)驗");
break;
default:
document.write("周六、日休息和娛樂");
}
5、for循環(huán)
很多事情不只是做一次,要重復(fù)做。這些事情,我們使用循環(huán)語句來完成,循環(huán)語句,就是重復(fù)執(zhí)行一段代碼。
for語句結(jié)構(gòu):
for(初始化變量;循環(huán)條件;循環(huán)迭代)
{
循環(huán)語句
}
例子:假如,一個盒子里有6個球,我們每次取一個,重復(fù)從盒中取出球,直到球取完為止。
<script type="text/javascript">
var num1=1;
for(num=1;num<=6;num++)
{
document.write("取出第"+num+"個球")
}
</script>
結(jié)果:

執(zhí)行思路:

6、while循環(huán)(反反復(fù)復(fù))
和for循環(huán)有相同功能的還有while循環(huán), while循環(huán)重復(fù)執(zhí)行一段代碼,直到某個條件不再滿足。
while語句結(jié)構(gòu):
while(判斷條件)
{
循環(huán)語句
}
例子:
使用while循環(huán),完成從盒子里取球的動作,每次取一個,共6個球。
<script type="text/javascript">
var num=0; ?//初始化值
while(num<=6) //條件判斷
{
document.write("取出第"+num+"個球<br/>");
num=num+1; //條件值更新
}
</script>
do...while循環(huán)(來來回回)
do while結(jié)構(gòu)的基本原理和while結(jié)構(gòu)是基本相同的,但是它保證循環(huán)體至少被執(zhí)行一次。因為它是先執(zhí)行代碼,后判斷條件,如果條件為真,繼續(xù)循環(huán)。
do...while語句結(jié)構(gòu):
do
{
循環(huán)語句
}
while(判斷條件)
例子:我們試著輸出5個數(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語句退出當(dāng)前循環(huán),直接執(zhí)行后面的代碼。
格式為:
for(初始條件;判斷條件;循環(huán)后條件值更新)
{
if(特殊情況)??
? ? ?{break;}?
? ? ? 循環(huán)代碼
}
當(dāng)遇到特殊情況的時候,循環(huán)就會立即結(jié)束。
7、continue繼續(xù)循環(huán)
continue的作用是僅僅跳過本次循環(huán),而整個循環(huán)體繼續(xù)執(zhí)行。
語句結(jié)構(gòu):
for(初始條件;判斷條件;循環(huán)后條件值更新)
{
if(特殊情況)
{continue;}
循環(huán)代碼
}
JS-函數(shù)
函數(shù)的作用:將完成特定功能的代碼寫到一個函數(shù)中,直接調(diào)用這個函數(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ù)定義好后,是不能自動執(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)建動態(tài)頁面,事件是可以被JavaScript 偵測到的行為。 網(wǎng)頁中的每個元素都可以產(chǎn)生某些可以觸發(fā) JavaScript 函數(shù)或程序的事件。
比如說,當(dāng)用戶單擊按鈕或者提交表單數(shù)據(jù)時,就發(fā)生一個鼠標(biāo)單擊(onclick)事件,需要瀏覽器做出處理,返回給用戶一個結(jié)果。
主要事件表:

2、鼠標(biāo)單擊事件(onclick)
onclick是鼠標(biāo)單擊事件,當(dāng)在網(wǎng)頁上單擊鼠標(biāo)時,就會發(fā)生該事件。同時onclick事件調(diào)用的程序塊就會被執(zhí)行,通常與按鈕一起使用。
例子:比如,我們單擊按鈕時,觸發(fā) onclick 事件,并調(diào)用兩個數(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)移到一個對象上時,該對象就觸發(fā)onmouseover事件,并執(zhí)行onmouseover事件調(diào)用的程序。
現(xiàn)實鼠標(biāo)經(jīng)過"確定"按鈕時,觸發(fā)onmouseover事件,調(diào)用函數(shù)info(),彈出消息框,代碼如下:
<script type="text/javascript">
? function info(){
? comfirm("請輸入姓名后,再點(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)前對象時,執(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)頁中的對象獲得聚點(diǎn)時,執(zhí)行onfocus調(diào)用的程序就會被執(zhí)行。
如下代碼, 當(dāng)將光標(biāo)移到文本框內(nèi)時,即焦點(diǎn)在文本框內(nèi),觸發(fā)onfocus 事件,并調(diào)用函數(shù)message()。


5、失焦事件(onblur)
onblur事件與onfocus是相對事件,當(dāng)光標(biāo)離開當(dāng)前獲得聚焦對象的時候,觸發(fā)onblur事件,同時執(zhí)行被調(diào)用的程序。
如下代碼, 網(wǎng)頁中有用戶和密碼兩個文本框。當(dāng)前光標(biāo)在用戶文本框內(nèi)時(即焦點(diǎn)在文本框),在光標(biāo)離開該文本框后(即失焦時),觸發(fā)onblur事件,并調(diào)用函數(shù)message()。


6、內(nèi)容選中事件(onselect)
選中事件,當(dāng)文本框或者文本域中的文字被選中時,觸發(fā)onselect事件,同時調(diào)用的程序就會被執(zhí)行。
如下代碼,當(dāng)選中用戶文本框內(nèi)的文字時,觸發(fā)onselect 事件,并調(diào)用函數(shù)message()。


7、文本框內(nèi)容改變事件
通過改變文本框的內(nèi)容來觸發(fā)onchange事件,同時執(zhí)行被調(diào)用的程序。
如下代碼,當(dāng)用戶將文本框內(nèi)的文字改變后,彈出對話框“您改變了文本內(nèi)容!”。


8、加載事件
事件會在頁面加載完成后,立即發(fā)生,同時執(zhí)行被調(diào)用的程序。
注意:1.?加載頁面時,觸發(fā)onload事件,事件寫在標(biāo)簽內(nèi)。
2. 此節(jié)的加載頁面,可理解為打開一個新頁面時。
如下代碼,當(dāng)加載一個新頁面時,彈出對話框“加載中,請稍等…”。


9、卸載事件(onunload)
當(dāng)用戶退出頁面時(頁面關(guān)閉、頁面刷新等),觸發(fā)onUnload事件,同時執(zhí)行被調(diào)用的程序。
注意:不同瀏覽器對onunload事件支持不同。
如下代碼,當(dāng)退出頁面時,彈出對話框“您確定離開該網(wǎng)頁嗎?”。


Javascript內(nèi)置對象
JavaScript 中的所有事物都是對象,如:字符串、數(shù)值、數(shù)組、函數(shù)等,每個對象帶有屬性和方法。
對象的屬性:反映該對象某些特定的性質(zhì)的,如:字符串的長度、圖像的長寬等;
對象的方法:能夠在對象上執(zhí)行的動作。例如,表單的“提交”(Submit),時間的“獲取”(getYear)等;
JavaScript 提供多個內(nèi)建對象,比如 String、Date、Array 等等,使用對象前先定義,如下使用數(shù)組對象:
var objectName =new Array();//使用new關(guān)鍵字定義對象或者var objectName =[];
訪問對象屬性的語法:
objectName.propertyName
1、Date 日期對象
日期對象可以儲存任意一個日期,并且可以精確到毫秒數(shù)(1/1000 秒)。
定義一個日期對象:
var Udate=new Date();
注意:使用關(guān)鍵字new,Date()的首字母必須大寫。
使 Udate 成為日期對象,并且已有初始值:當(dāng)前時間(當(dāng)前電腦系統(tǒng)時間)。
如果要自定義初始值,可以用以下方法:
var d = new Date(2012, 10, 1);//2012年10月1日
var d = new Date('Oct 1, 2012');//2012年10月1日
我們最好使用下面介紹的“方法”來嚴(yán)格定義時間。
訪問方法語法:“<日期對象>.<方法>”
Date對象中處理時間和日期的常用方法:

1.1返回/設(shè)置年份方法(get/setFullYear)
get/setFullYear:返回或設(shè)置年份,用四位數(shù)表示。
var mydate=new Date();//當(dāng)前時間2014年3月6日
document.write(mydate+"");//輸出當(dāng)前時間
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é)果格式依次為:星期、月、日、年、時、分、秒、時區(qū)。(火狐瀏覽器)
2. 不同瀏覽器,時間格式有差異。
1.2 返回星期方法(getDay)
getDay()返回星期,返回的是0-6的數(shù)字,0 表示星期天。如果要返回相對應(yīng)“星期”,通過數(shù)組完成,代碼如下:
<script type="text/javascript">
var mydate=new Date();//定義日期對象
var weekday=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];//定義數(shù)組對象,給每個數(shù)組項賦值
var mynum=mydate.getDay();//返回值存儲在變量mynum中
document.write(mydate.getDay());//輸出getDay()獲取值
document.write("今天是:"+ weekday[mynum]);//輸出星期幾
注意:以上代碼是在2014年3月7日,星期五運(yùn)行。
結(jié)果:
5
今天是:星期五
1.3 返回/設(shè)置時間方法
get/setTime()返回/設(shè)置時間,單位毫秒數(shù),計算從 1970 年 1 月 1 日零時到日期對象所指的日期的毫秒數(shù)。
如果將目前日期對象的時間推遲1小時,代碼如下:
<script type="text/javascript">
var mydate=new Date()
document.write("當(dāng)前時間:"+mydate+"</br>");
mydate.setTime(mydate.getTime() + 60 * 60 * 1000);
document.write("推遲一小時時間:" + mydate);
</script>
1.4 String字符串對象
定義字符串的方法就是直接賦值。比如:
var mystr = "I love JavaScript!"
定義mystr字符串后,我們就可以訪問它的屬性和方法。
訪問字符串對象的屬性length:
stringObject.length;返回該字符串的長度。
var mystr="Hello World!";
var myl=mystr.length;
以上代碼執(zhí)行后,myl 的值將是:12
訪問字符串對象的方法:
使用 String 對象的 toUpperCase() 方法來將字符串小寫字母轉(zhuǎn)換為大寫:
var mystr="Hello world!";
var mynum=mystr.toUpperCase();
以上代碼執(zhí)行后,mynum 的值是:HELLO WORLD!
1.5 返回指定位置的字符:charAt()
charAt() 方法可返回指定位置的字符。返回的字符是長度為 1 的字符串。
語法:
stringObject.charAt(index)
參數(shù)說明:

注意:1.字符串中第一個字符的下標(biāo)是 0。最后一個字符的下標(biāo)為字符串長度減一(string.length-1)。
2.如果參數(shù) index 不在 0 與 string.length-1 之間,該方法將返回一個空字符串。
如:在字符串 "I love JavaScript!" 中,返回位置2的字符:
<script type="text/javascript">
var mystr="I love JavaScript!"
document.write(mystr.charAt(2));
</script>
注意:一個空格也算一個字符。
以上代碼的運(yùn)行結(jié)果:
L
1.6 返回指定的字符串首次出現(xiàn)的位置
indexOf() 方法可返回某個指定的字符串值在字符串中首次出現(xiàn)的位置。
語法
stringObject.indexOf(substring, startpos)
參數(shù)說明:

說明:
1.該方法將從頭到尾地檢索字符串 stringObject,看它是否含有子串 substring。
2.可選參數(shù),從stringObject的startpos位置開始查找substring,如果沒有此參數(shù)將從stringObject的開始位置查找。
3.如果找到一個 substring,則返回 substring 的第一次出現(xiàn)的位置。stringObject 中的字符位置是從 0 開始的。
注意:1.indexOf() 方法區(qū)分大小寫。
2.如果要檢索的字符串值沒有出現(xiàn),則該方法返回 -1。
例如: 對 "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()
知識講解:
split() 方法將字符串分割為字符串?dāng)?shù)組,并返回此數(shù)組。
語法:
stringObject.split(separator,limit)
參數(shù)說明:

注意:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每個字符之間都會被分割。
我們將按照不同的方式來分割字符串:
使用指定符號分割字符串,代碼如下:
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() 方法用于提取字符串中介于兩個指定下標(biāo)之間的字符。
語法:
stringObject.substring(startPos,stopPos)
參數(shù)說明:

注意:
1. 返回的內(nèi)容是從?start開始(包含start位置的字符)到?stop-1 處的所有字符,其長度為?stop?減start。
如果只有startPos,沒有stopPos,則指的是提取從startPos到最后的所有的字符。
2. 如果參數(shù) start 與 stop 相等,那么該方法返回的就是一個空串(即長度為 0 的字符串)。
3. 如果 start 比 stop 大,那么該方法在提取子串之前會先交換這兩個參數(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ù)目的字符串。
語法:
stringObject.substr(startPos,length)
參數(shù)說明:

注意:如果參數(shù)startPos是負(fù)數(shù),從字符串的尾部開始算起的位置。也就是說,-1 指字符串中最后一個字符,-2 指倒數(shù)第二個字符,以此類推。
如果startPos為負(fù)數(shù)且絕對值大于字符串長度,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對象
Math對象,提供對數(shù)據(jù)的數(shù)學(xué)計算。
使用 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 對象是一個固有的對象,無需創(chuàng)建它,直接把 Math 作為對象使用就可以調(diào)用其所有屬性和方法。這是它與Date,String對象的區(qū)別。
Math 對象屬性

Math 對象方法

1.8 向上取整
ceil() 方法可對一個數(shù)進(jìn)行向上取整。
語法:
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() 方法可對一個數(shù)進(jìn)行向下取整。
語法:
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() 方法可把一個數(shù)字四舍五入為最接近的整數(shù)。
語法:
Math.round(x)
參數(shù)說明:

注意:
1. 返回與 x 最接近的整數(shù)。
2. 對于 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)之間的一個隨機(jī)數(shù)。
語法:
Math.random();
注意:返回一個大于或等于 0 但小于 1 的符號為正的數(shù)字值。
我們?nèi)〉媒橛?0 到 1 之間的一個隨機(jī)數(shù),代碼如下:
<script type="text/javascript">
document.write(Math.random());
</script>
運(yùn)行結(jié)果:
0.190305486195328
注意:因為是隨機(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ù)組對象 Array
數(shù)組對象是一個對象的集合,里邊的對象可以是不同類型的。數(shù)組的每一個成員對象都有一個“下標(biāo)”,用來表示它在數(shù)組中的位置,是從零開始的
數(shù)組定義的方法:
1. 定義了一個空數(shù)組:
var? 數(shù)組名= new Array();
2、定義時指定有n個空元素的數(shù)組:
var 數(shù)組名 =new Array(n);
3、定義數(shù)組的時候,直接初始化數(shù)據(jù):
var? 數(shù)組名 = [<元素1>, <元素2>, <元素3>...];
我們定義myArray數(shù)組,并賦值,代碼如下:
說明:定義了一個數(shù)組 myArray,里邊的元素是:myArray[0] = 2; myArray[1] = 8; myArray[2] = 6。
數(shù)組元素使用:
數(shù)組名[下標(biāo)] = 值;
注意: 數(shù)組的下標(biāo)用方括號括起來,從0開始。
數(shù)組屬性:
length 用法:<數(shù)組對象>.length;返回:數(shù)組的長度,即數(shù)組里有多少個元素。它等于數(shù)組里最后一個元素的下標(biāo)加一。
數(shù)組方法:

2.1 數(shù)組連接concat()
concat() 方法用于連接兩個或多個數(shù)組。此方法返回一個新數(shù)組,不改變原來的數(shù)組。
語法
arrayObject.concat(array1,array2,...,arrayN)
參數(shù)說明:

注意:該方法不會改變現(xiàn)有的數(shù)組,而僅僅會返回被連接數(shù)組的一個副本。
我們創(chuàng)建一個數(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)建了三個數(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ù)組中的所有元素放入一個字符串。元素是通過指定的分隔符進(jìn)行分隔的。
語法:
arrayObject.join(分隔符)
參數(shù)說明:

注意:返回一個字符串,該字符串把數(shù)組中的各個元素串起來,用<分隔符>置于元素與元素之間。這個方法不影響數(shù)組原本的內(nèi)容。 我們使用join()方法,將數(shù)組的所有元素放入一個字符串中,代碼如下:
<script type="text/javascript">
var myarr = new Array(3)
myarr[0] = "I";
myarr[1] = "love";
myarr[2] = "JavaScript";
document.write(myarr.join("."));------分隔符加雙引號
運(yùn)行結(jié)果:
I.love.JavaScript
2.3 顛倒數(shù)組元素順序reverse()
reverse() 方法用于顛倒數(shù)組中元素的順序。
語法:
arrayObject.reverse()
注意:該方法會改變原來的數(shù)組,而不會創(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ù)組中返回選定的元素。
語法
arrayObject.slice(start,end)
參數(shù)說明:

1.返回一個新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
2. 該方法并不會修改數(shù)組,而是返回一個子數(shù)組。
注意:
1. 可使用負(fù)值從數(shù)組的尾部選取元素。
2.如果 end 未被規(guī)定,那么 slice() 方法會選取從 start 到數(shù)組結(jié)尾的所有元素。
3. String.slice() 與 Array.slice() 相似。
我們將創(chuàng)建一個新數(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ù)組中的元素按照一定的順序排列。
語法:
arrayObject.sort(方法函數(shù))
參數(shù)說明:

1.如果不指定<方法函數(shù)>,則按unicode碼順序排列。
2.如果指定<方法函數(shù)>,則按<方法函數(shù)>所指定的排序方法排序。
myArray.sort(sortMethod);
注意:該函數(shù)要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個參數(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ù)值的大小對數(shù)字進(jìn)行排序。
2.如要實現(xiàn)這一點(diǎn),就必須使用一個排序函數(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
瀏覽器對象
1、window對象
window對象是BOM的核心,window對象指當(dāng)前的瀏覽器窗口。
window對象方法:

2、JavaScript 計時器
在JavaScript中,我們可以在設(shè)定的時間間隔之后來執(zhí)行代碼,而不是在函數(shù)被調(diào)用后立即執(zhí)行。
計時器類型:
一次性計時器:僅在指定的延遲時間之后觸發(fā)一次。
間隔性觸發(fā)計時器:每隔一定的時間間隔就觸發(fā)一次。
計時器方法:

3、計時器setInterval()
在執(zhí)行時,從載入頁面后每隔指定的時間執(zhí)行代碼。
語法:
setInterval(代碼,交互時間);
參數(shù)說明:
1. 代碼:要調(diào)用的函數(shù)或要執(zhí)行的代碼串。
2. 交互時間:周期性執(zhí)行或調(diào)用表達(dá)式之間的時間間隔,以毫秒計(1s=1000ms)。
返回值:
一個可以傳遞給 clearInterval() 從而取消對"代碼"的周期性執(zhí)行的值。
調(diào)用函數(shù)格式(假設(shè)有一個clock()函數(shù)):
setInterval("clock()",1000)
或
setInterval(clock,1000)
我們設(shè)置一個計時器,每隔100毫秒調(diào)用clock()函數(shù),并將時間顯示出來,代碼如下: