閱讀目錄(原創-萌小Q)javascript
你知道嗎,Web前端開發師須要掌握什麼技術?也許你已經瞭解HTML標記(也稱爲結構),知道了CSS樣式(也稱爲表示),會使用HTML+CSS建立一個漂亮的頁面,但這還不夠,它只是靜態頁面而已。咱們還需使用JavaScript增長行爲,爲網頁添加動態效果。準備好,讓JavaScript帶你進入新境界吧!html
JavaScript能作什麼?前端
1.加強頁面動態效果(如:下拉菜單、圖片輪播、信息滾動等)java
2.實現頁面與用戶之間的實時、動態交互(如:用戶註冊、登錄驗證等)web
JS進階篇學習什麼?面試
在JavaScript入門篇中,咱們學習瞭如何插入JS、輸出內容及簡單的DOM操做,JavaScript進階篇讓您進一步的瞭解JS的變量、數組、函數、語法、對象、事件、DOM操做,製做簡單的網頁動態效果。編程
注意: 1. JS是區分大小寫的,如:classname和ClassName是不同的。同時注意方法、屬性、變量等的大小寫吆。 2. JS中的字符、符號等必定要在英文狀態下輸入吆。
什麼是變量? 從字面上看,變量是可變的量;從編程角度講,變量是用於存儲某種/某些數值的存儲器。咱們能夠把變量看作一個盒子,盒子用來存放物品,物品能夠是衣服、玩具、水果...等。數組
咱們爲了區分盒子,能夠用BOX1,BOX2等名稱表明不一樣盒子,BOX1就是盒子的名字(也就是變量的名字)。網絡
咱們趕快給變量取個好名字吧!變量名字能夠任意取,只不過取名字要遵循一些規則:函數
1.必須以字母、下劃線或美圓符號開頭,後面能夠跟字母、下劃線、美圓符號和數字。以下:
正確: mysum _mychar $numa1
錯誤: 6num //開頭不能用數字 %sum //開頭不能用除(_ $)外特殊符號,如(% + /等) sum+num //開頭中間不能使用除(_ $)外特殊符號,如(% + /等)
2.變量名區分大小寫,如:A與a是兩個不一樣變量。
3.不容許使用JavaScript關鍵字和保留字作變量名。
咱們要使用盒子裝東西,是否是先要找到盒子,那在編程中,這個過程叫聲明變量,找盒子的動做,如何表示:
聲明變量語法: var 變量名;
var就至關於找盒子的動做,在JavaScript中是關鍵字(即保留字),這個關鍵字的做用是聲明變量,併爲"變量"準備位置(即內存)。
var mynum ; //聲明一個變量mynum
固然,咱們能夠一次找一個盒子,也能夠一次找多個盒子,因此Var還能夠一次聲明多個變量,變量之間用","逗號隔開。
var num1,mun2 ; //聲明一個變量num1
注意:變量也能夠不聲明,直接使用,但爲了規範,須要先聲明,後使用。
咱們能夠把變量看作一個盒子,盒子用來存放物品,那如何在變量中存儲內容呢?
咱們使用"="
號給變量存儲內容,看下面的語句:
var mynum = 5 ; //聲明變量mynum並賦值。
這個語句怎麼讀呢? 給變量mynum賦值,值爲5。咱們也能夠這樣寫:
var mynum; //聲明變量mynum mynum = 5 ; //給變量mynum賦值
注:這裏 "="
號的做用是給變量賦值,不是等於號。
盒子能夠裝衣服、玩具、水果...等。其實,變量是無所不能的容器,你能夠把任何東西存儲在變量裏,如數值、字符串、布爾值等,例如:
var num1 = 123; // 123是數值 var num2 = "一二三"; //"一二三"是字符串 var num3=true; //布爾值true(真),false(假)
其中,num1變量存儲的內容是數值;num2變量存儲的內容是字符串,字符串須要用一對引號""
括起來,num3變量存儲的內容是布爾值(true、false)。
表達式與數學中的定義類似,表達式是指具備必定的值、用操做符把常數和變量鏈接起來的代數式。一個表達式能夠包含常數或變量。
咱們先看看下面的JavaScript語句:
生活中「再見」表達方法不少,如:英語(goodbye)、網絡語(88)、肢體語(揮揮手)等。在JavaScript表達式無處不在,因此必定要知道能夠表達哪些內容,看看下面幾種狀況:
注意:串表達式中mychar是變量
注意:數值表達式中num是變量
注意:布爾表達式中num是變量
操做符是用於在JavaScript中指定必定動做的符號。
(1)操做符
看下面這段JavaScript代碼。
sum = numa + numb;
其中的"="
和"+"
都是操做符。
JavaScript中還有不少這樣的操做符,例如,算術操做符(+、-、*、/等),比較操做符(<、>、>=、<=等),邏輯操做符(&&、||、!)。
注意: 「=」 操做符是賦值,不是等於。
(2) "+"
操做符
算術運算符主要用來完成相似加減乘除的工做,在JavaScript中,「+」不僅表明加法,還能夠鏈接兩個字符串,例如:
mystring = "Java" + "Script"; // mystring的值「JavaScript」這個字符串
算術操做符除了(+、-、*、/)外,還有兩個很是經常使用的操做符,自加一「++」
;自減一「--」
。首先來看一個例子:
mynum = 10; mynum++; //mynum的值變爲11 mynum--; //mynum的值又變回10
上面的例子中,mynum++使mynum值在原基礎上增長1,mynum--使mynum在原基礎上減去1,其實也能夠寫成:
mynum = mynum + 1;//等同於mynum++ mynum = mynum - 1;//等同於mynum--
咱們先來作道數學題,數學考試成績中,小明考了90分,小紅考了95分,問誰考的分數高? 答: 由於「95 > 90」,因此小紅考試成績高。
其中大於號">" 就是比較操做符,小紅考試成績和小明考試成績就是操做數,而且是兩個操做數。
也就是說兩個操做數經過比較操做符進行比較,獲得值爲真(true)和假(false)。
在JavaScript中,這樣的比較操做符有不少,這些操做符的含義以下:
看看下面例子:
var a = 5;//定義a變量,賦值爲5 var b = 9; //定義b變量,賦值爲9 document.write (a<b); //a小於b的值嗎? 結果是真(true) document.write (a>=b); //a大於或等於b的值嗎? 結果是假(false) document.write (a!=b); //a不等於b的值嗎? 結果是真(true) document.write (a==b); //a等於b的值嗎? 結果是假(false)
數學裏面的「a>b」,在JavaScript中還表示爲a>b;數學中的「b大於a,b小於c」是「a<b<c」,那麼在JavaScript中能夠用&&表示,以下:
b>a && b<c //「&&」是而且的意思, 讀法"b大於a"而且" b小於c "
比如咱們參加高考時,在進入考場前,必須出示准考證和身份證,二者缺一不可,不然不能參加考試,表示以下:
if(有準考證 &&有身份證) { 進行考場考試 }
「&&」是邏輯與操做符,只有「&&」兩邊值同時知足(同時爲真),整個表達式值才爲真。
邏輯與操做符值表:
注意: 若是A爲假,A && B爲假,不會在執行B; 反之,若是A爲真,要由 B 的值來決定 A && B 的值。
"||"
邏輯或操做符,至關於生活中的「或者」,當兩個條件中有任一個條件知足,「邏輯或」的運算結果就爲「真」。
例如:本週咱們計劃出遊,但是週一至週五工做,因此週六或者週日哪天去均可以。即兩天中只要有一天有空,就能夠出遊了。
var a=3; var b=5; var c; c=b>a ||a>b; //b>a是true,a>b是false,c是true
邏輯或操做符值表:
注意: 若是A爲真,A || B爲真,不會在執行B; 反之,若是A爲假,要由 B 的值來決定 A || B 的值。
"!"
是邏輯非操做符,也就是"不是"的意思,非真即假,非假即真。比如小華今天買了一個杯子,小明說:"杯子是白色的",小亮說:「杯子是紅色的」,小華說:"小明說的不是真話
,小亮說的不是假話
"。猜猜小華買的什麼顏色的杯子,答案:紅色杯子。
邏輯非操做符值表:
看下面代碼,變量c的值是什麼:
var a=3; var b=5; var c; c=!(b>a); // b>a值是true,! (b>a)值是false c=!(b<a); // b<a值是false, ! (b<a)值是true
咱們都知道,除法、乘法等操做符的優先級比加法和減法高,例如:
var numa=3; var numb=6 jq= numa + 30 / 2 - numb * 3; // 結果爲0
若是咱們要改變運算順序,需添加括號的方法來改變優先級:
var numa=3; var numb=6 jq= ((numa + 30) / (2 - numb)) * 3; //結果是-24.75
操做符之間的優先級(高到低):
算術操做符 → 比較操做符 → 邏輯操做符 → "="賦值符號
若是同級的運算是按從左到右次序進行,多層括號由裏向外。
var numa=3; var numb=6; jq= numa + 30 >10 && numb * 3<2; //結果爲false
咱們知道變量用來存儲數據,一個變量只能存儲一個內容。假設你想存儲10我的的姓名或者存儲20我的的數學成績,就須要10個或20個變量來存儲,若是須要存儲更多數據,那就會變的更麻煩。咱們用數組解決問題,一個數組變量能夠存放多個數據。比如一個團,團裏有不少人,以下咱們使用數組存儲5個學生成績。
數組是一個值的集合,每一個值都有一個索引號,從0開始,每一個索引都有一個相應的值,根據須要添加更多數值。
示例代碼:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>什麼是數組</title> 6 <script type="text/javascript"> 7 var myarr=new Array(); //定義數組 8 myarr[0]=80; 9 myarr[1]=60; 10 myarr[2]=99; 11 document.write("第一我的的成績是:"+myarr[0]); 12 document.write("第二我的的成績是:"+myarr[1]); 13 document.write("第三我的的成績是:"+myarr[2]); 14 </script> 15 </head> 16 <body> 17 </html>
使用數組以前首先要建立,並且須要把數組自己賦至一個變量。比如咱們出遊,要組團,並給團定個名字「雲南之旅」。
建立數組語法:
var myarray=new Array();
咱們建立數組的同時,還能夠爲數組指定長度,長度可任意指定。
var myarray= new Array(8); //建立數組,存儲8個數據。
注意:
1.建立的新數組是空數組,沒有值,如輸出,則顯示undefined。
2.雖然建立數組時,指定了長度,但實際上數組都是變長的,也就是說即便指定了長度爲8,仍然能夠將元素存儲在規定長度之外。
代碼示例:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>建立數組</title> 6 <script type="text/JavaScript"> 7 var myarr=new Array(); 8 document.write("數組的第一個值:"+myarr[0]); 9 </script> 10 </head> 11 <body> 12 </body> 13 </html>
結果:
數組的第一個值:undefined
數組建立好,接下來咱們爲數組賦值。咱們把數組看似旅遊團的大巴車,大巴車裏有不少位置,每一個位置都有一個號碼,顧客要坐在哪一個位置呢?
第一步:組個大巴車 第二步:按票對號入座 大巴車的1號座位是張三 大巴車的2號座位是李四
數組的表達方式:
第一步:建立數組var myarr=new Array(); 第二步:給數組賦值 myarr[1]=" 張三"; myarr[2]=" 李四";
下面建立一個數組,用於存儲5我的的數學成績。
var myarray=new Array(); //建立一個新的空數組 myarray[0]=66; //存儲第1我的的成績 myarray[1]=80; //存儲第2我的的成績 myarray[2]=90; //存儲第3我的的成績 myarray[3]=77; //存儲第4我的的成績 myarray[4]=59; //存儲第5我的的成績
注意:數組每一個值有一個索引號,從0開始。
咱們還能夠用簡單的方法建立上面的數組和賦值:
第一種方法:
var myarray = new Array(66,80,90,77,59);//建立數組同時賦值
第二種方法:
var myarray = [66,80,90,77,59];//直接輸入一個數組(稱 「字面量數組」)
注意:數組存儲的數據能夠是任何類型(數字、字符、布爾值等)
上一節中,咱們使用myarray變量存儲了5我的的成績,如今多出一我的的成績,如何存儲呢?
只需使用下一個未用的索引,任什麼時候刻能夠不斷向數組增長新元素。
myarray[5]=88; //使用一個新索引,爲數組增長一個新元素
咱們知道數組中的每一個值有一個索引號,從0開始,以下圖, myarray變量存儲6我的的成績:
要獲得一個數組元素的值,只需引用數組變量並提供一個索引,如:
第一我的的成績表示方法:myarray[0]
第三我的的成績表示方法: myarray[2]
若是咱們想知道數組的大小,只需引用數組的一個屬性length。Length屬性表示數組的長度,即數組中元素的個數。
語法:
myarray.length; //得到數組myarray的長度
注意:由於數組的索引老是由0開始,因此一個數組的上下限分別是:0和length-1。如數組的長度是5,數組的上下限分別是0和4。
var arr=[55,32,5,90,60,98,76,54];//包含8個數值的數組arr document.write(arr.length); //顯示數組長度8 document.write(arr[7]); //顯示第8個元素的值54
同時,JavaScript數組的length屬性是可變的,這一點須要特別注意。
arr.length=10; //增大數組的長度 document.write(arr.length); //數組長度已經變爲10
數組隨元素的增長,長度也會改變,以下:
var arr=[98,76,54,56,76]; // 包含5個數值的數組 document.write(arr.length); //顯示數組的長度5 arr[15]=34; //增長元素,使用索引爲15,賦值爲34 alert(arr.length); //顯示數組的長度16
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>數組長度</title> 6 <script language="javascript"> 7 var mynum=new Array(65,90,88,98); 8 document.write("數組的長度是:"+ mynum.length ); 9 </script> 10 </head> 11 <body> 12 </body> 13 </html>
一維數組,咱們當作一組盒子,每一個盒子只能放一個內容。
一維數組的表示: myarray[ ]
二維數組,咱們當作一組盒子,不過每一個盒子裏還能夠放多個盒子。
二維數組的表示: myarray[ ][ ]
注意: 二維數組的兩個維度的索引值也是從0開始,兩個維度的最後一個索引值爲長度-1。
1. 二維數組的定義方法一
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; // 賦值,每一個數組元素的值爲i+j } }
將上面二維數組,用表格的方式表示:
2. 二維數組的定義方法二
var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3, ]]
3. 賦值
myarr[0][1]=5; //將5的值傳入到數組中,覆蓋原有值。
說明: myarr[0][1] ,0 表示表的行,1表示表的列。
if語句是基於條件成立才執行相應代碼時使用的語句。
語法:
if(條件) { 條件成立時執行代碼}
注意:if小寫,大寫字母(IF)會出錯!
假設你應聘web前端技術開發崗位,若是你會HTML技術,你面試成功,歡迎加入公司。代碼表示以下:
<script type="text/javascript"> var mycarrer = "HTML"; if (mycarrer == "HTML") { document.write("你面試成功,歡迎加入公司。"); } </script>
if...else語句是在指定的條件成立時執行代碼,在條件不成立時執行else後的代碼。
語法:
if(條件) { 條件成立時執行的代碼} else {條件不成立時執行的代碼}
假設你應聘web前端技術開發崗位,若是你會HTML技術,你面試成功,歡迎加入公司,不然你面試不成功,不能加入公司。
代碼表示以下:
<script type="text/javascript"> var mycarrer = "HTML"; //mycarrer變量存儲技能 if (mycarrer == "HTML") { document.write("你面試成功,歡迎加入公司。"); } else //不然,技能不是HTML { document.write("你面試不成功,不能加入公司。");} </script>
要在多組語句中選擇一組來執行,使用if..else嵌套語句。
語法:
if(條件1) { 條件1成立時執行的代碼} else if(條件2) { 條件2成立時執行的代碼} ... else if(條件n) { 條件n成立時執行的代碼} else { 條件一、2至n不成立時執行的代碼}
假設數學考試,小明考了86分,給他作個評價,60分如下的不及格,60(包含60分)-75分爲良好,75(包含75分)-85分爲很好,85(包含75分)-100優秀。
代碼表示以下:
結果:
當有不少種選項的時候,switch比if else使用更方便。
語法:
switch(表達式) { case值1: 執行代碼塊 1 break; case值2: 執行代碼塊 2 break; ... case值n: 執行代碼塊 n break; default: 與 case值1 、 case值2...case值n 不一樣時執行的代碼 }
語法說明:
Switch必須賦初始值,值與每一個case值匹配。知足執行該 case 後的全部語句,並用break語句來阻止運行下一個case。如全部case值都不匹配,執行default後的語句。
假設評價學生的考試成績,10分滿分制,咱們按照每一分一個等級將成績分等,並根據成績的等級作出不一樣的評價。
代碼以下:
執行結果:
評語: 及格,加油!
注意:記得在case所執行的語句後添加上一個break語句。不然就直接繼續執行下面的case中的語句,看如下代碼:
執行結果:
評語: 繼續努力! 評語: 及格,加油! 評語: 湊合,奮進 評語: 很棒,很棒 評語: 高手,大牛
在上面的代碼中,沒有break中止語句,若是成績是4分,則case 5後面的語句將會獲得執行,一樣,case六、7-10後面的語句都會獲得執行。
不少事情不僅是作一次,要重複作。如打印10份試卷,每次打印一份,重複這個動做,直到打印完成。這些事情,咱們使用循環語句來完成,循環語句,就是重複執行一段代碼。
for語句結構:
for(初始化變量;循環條件;循環迭代) { 循環語句 }
假如,一個盒子裏有6個球,咱們每次取一個,重複從盒中取出球,直到球取完爲止。
<script type="text/javascript"> var num=1; for (num=1;num<=6;num++) //初始化值;循環條件;循環後條件值更新 { document.write("取出第"+num+"個球<br />"); } </script>
結果:
執行思路:
和for循環有相同功能的還有while循環, while循環重複執行一段代碼,直到某個條件再也不知足。
while語句結構:
while(判斷條件) { 循環語句 }
使用while循環,完成從盒子裏取球的動做,每次取一個,共6個球。
<script type="text/javascript"> var num=0; //初始化值 while (num<=6) //條件判斷 { document.write("取出第"+num+"個球<br />"); num=num+1; //條件值更新 } </script>
do while結構的基本原理和while結構是基本相同的,可是它保證循環體至少被執行一次。由於它是先執行代碼,後判斷條件,若是條件爲真,繼續循環。
do...while語句結構:
do { 循環語句 } while(判斷條件)
咱們試着輸出5個數字。
<script type="text/javascript"> num= 1; do { document.write("數值爲:" + num+"<br />"); num++; //更新條件 } while (num<=5) </script>
執行結果:
爲何呢?咱們來看下執行思路:
在while、for、do...while、while循環中使用break語句退出當前循環,直接執行後面的代碼。
格式以下:
for(初始條件;判斷條件;循環後條件值更新) { if(特殊狀況) {break;} 循環代碼 }
當遇到特殊狀況的時候,循環就會當即結束。看看下面的例子,輸出10個數,若是數值爲5,就中止輸出。
執行結果:
注:當num=5的時候循環就會結束,不會輸出後面循環的內容。
continue的做用是僅僅跳過本次循環,而整個循環體繼續執行。
語句結構:
for(初始條件;判斷條件;循環後條件值更新) { if(特殊狀況) { continue; } 循環代碼 }
上面的循環中,當特殊狀況發生的時候,本次循環將被跳過,然後續的循環則不會受到影響。比如輸出10個數字,若是數字爲5就不輸出了。
執行結果:
注:上面的代碼中,num=5的那次循環將被跳過。
代碼練習:
在一個大學的編程選修課班裏,咱們獲得了一組參加該班級的學生數據,分別是姓名、性別、年齡和年級,接下來呢,咱們要利用JavaScript的知識挑出其中全部是大一的女生的的名字哦。
學生信息以下:
('小A','女',21,'大一'), ('小B','男',23,'大三'),
('小C','男',24,'大四'), ('小D','女',21,'大一'),
('小E','女',22,'大四'), ('小F','男',21,'大一'),
('小G','女',22,'大二'), ('小H','女',20,'大三'),
('小I','女',20,'大一'), ('小J','男',20,'大三')
第一步: 把這些數據組成一個數組,方便咱們以後操做哦。
提示: 使用二維數組。
第二步: 篩選數據吧,首先找出都是大一的全部信息 ;
第三步: 最後再一次篩選上一步獲得的數據,打印出都是女生的姓名 ;
提示: 能夠用switch 或 if 語句進行篩選。
1 !DOCTYPE HTML> 2 <html > 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>流程控制語句</title> 6 <script type="text/javascript"> 7 8 //第一步把以前的數據寫成一個數組的形式,定義變量爲 infos 9 var infos=[['小A','女',21,'大一'], 10 ['小B','男',23,'大三'], 11 ['小C','男',24,'大四'], 12 ['小D','女',21,'大一'], 13 ['小E','女',22,'大四'], 14 ['小F','男',21,'大一'], 15 ['小G','女',22,'大二'], 16 ['小H','女',20,'大三'], 17 ['小I','女',20,'大一'], 18 ['小J','男',20,'大三'] 19 ]; 20 21 var b=new Array(); 22 var j=0; 23 //第一次篩選,找出都是大一的信息 24 for(var i=0;i<infos.length;i++){ 25 if(infos[i][3]=="大一"){ 26 b[j]=infos[i]; 27 j++; 28 document.write(infos[i]+"<br/>"); 29 } 30 } 31 32 //第二次篩選,找出都是女生的信息 33 for(var i=0;i<b.length;i++){ 34 if(b[i][1]=="女"){ 35 document.write(b[i][0]+"<br/>"); 36 } 37 } 38 39 </script> 40 </head> 41 <body> 42 </body> 43 </html>