JS學(xué)習(xí)路徑

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

邏輯操作符

&&:?讀法:與/并且

&&的操作符值

如果A為假,A&&B為假,不會再執(zhí)行B;如果A為真,要由B的值來決定A&&B的值。

if(A&&B)

{ ? ? ?}

||:讀法:或

||的操作符值

如果A為真,A||B為真,不會再執(zhí)行B;如果A為假,要由B的值來決定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()。


運(yùn)行結(jié)果

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()。

運(yùn)行結(jié)果

6、內(nèi)容選中事件(onselect)

選中事件,當(dāng)文本框或者文本域中的文字被選中時,觸發(fā)onselect事件,同時調(diào)用的程序就會被執(zhí)行。

如下代碼,當(dāng)選中用戶文本框內(nèi)的文字時,觸發(fā)onselect 事件,并調(diào)用函數(shù)message()。

運(yùn)行結(jié)果


7、文本框內(nèi)容改變事件

通過改變文本框的內(nèi)容來觸發(fā)onchange事件,同時執(zhí)行被調(diào)用的程序。

如下代碼,當(dāng)用戶將文本框內(nèi)的文字改變后,彈出對話框“您改變了文本內(nèi)容!”。

運(yùn)行結(jié)果

8、加載事件

事件會在頁面加載完成后,立即發(fā)生,同時執(zhí)行被調(diào)用的程序。

注意:1.?加載頁面時,觸發(fā)onload事件,事件寫在標(biāo)簽內(nèi)。

2. 此節(jié)的加載頁面,可理解為打開一個新頁面時。

如下代碼,當(dāng)加載一個新頁面時,彈出對話框“加載中,請稍等…”。

運(yùn)行結(jié)果

9、卸載事件(onunload)

當(dāng)用戶退出頁面時(頁面關(guān)閉、頁面刷新等),觸發(fā)onUnload事件,同時執(zhí)行被調(diào)用的程序。

注意:不同瀏覽器對onunload事件支持不同。

如下代碼,當(dāng)退出頁面時,彈出對話框“您確定離開該網(wǎng)頁嗎?”。


運(yùn)行結(jié)果

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ù),并將時間顯示出來,代碼如下:


DOM對象,控制HTML元素

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

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

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