JavaScript
1:javascript簡介
JavaScript是一種腳本語言,能實作網頁内容的互動顯示,當使用者在用戶端顯示該網頁時,浏覽器就會執行JavaScript程式,使用者通過互動的操作來改變網頁等等内容,來實作html語言無法實作的效果
(html是網頁的基礎,css是樣式,js是特效)
2:javascript語言特點
2.1:JavaScript是基于對象和事件驅動的(動态的),它可以直接對使用者或客戶輸入做出響應,無須經過web服務程式,他對使用者的響應,是采用以事件驅動的方式進行的 ,所謂事件驅動,就是指在首頁中執行了某種操作産生的動作,就成為事件。比如按下滑鼠,移動視窗,選擇菜單都可以視為事件,當事件發生後,可能引起相應的事件響應
2.2:JavaScript是跨平台的
javascript是依賴于浏覽器本身的,與作業系統無關。
3:如何使用JavaScript
3.1:通過<script></script>中直接編寫
3.2:通過<script src='目标文檔的URL'></script>連結外部的js檔案
3.3:作為某個元素的事件屬性值或者是超連結的href屬性值
<a href="javascript:alert('hello')">點選</a>
4:代碼屏蔽
4.1:<!--//-->當浏覽器不支援js時進行代碼屏蔽
4.2:如果浏覽器不支援js,可以使用<noscript></noscript>标簽,顯示noscript中的内容
5:javascript的基本文法
5.1:JavaScript的執行順序
(1):按照在html檔案中出現的順序依次執行
(2):優化由于html的執行順序則js的代碼(腳本)最好放在body标簽中,放到網頁的最後,css樣式放在head标簽中
(遵循雅虎14條前端優化的規則)
5.2:大小寫敏感,忽略空白符和換行符
JavaScript嚴格區分大小寫
5.3:語句分隔符
使用結束語句;
可以把多個語句寫在一行;
最後一個語句的分号可以省略,但盡量不要省略;
可以使用{}括成一個語句組,形成一個block塊;
5.4:\進行折行操作是針對代碼的,避免一行過長,
document.write("asdfghjklqwer\
tyuiopzxcvbnm");
5.5:注釋
//單行注釋内容
/*
*多行注釋内容
*/
5.6:JavaScript中的錯誤
5.7:通過document.write()向文檔書寫内容(不可以拿來調試bug)
通過console.log()向控制台寫入内容(控制台輸出)
5.8:火狐浏覽器
進行程式的斷點調試,插件的安裝,菜單--》附加元件--》Firebug
(F12打開Firebug,firebug第一可以檢視和編輯修改html和css的源碼
第二頁面概況,第三動态執行JavaScript。火狐工具打斷點調試,第四監控網絡情況)
6:Javascript變量和資料類型
6.1:定義變量
var 變量名;(var這個關鍵詞可以省略的);
6.2:javascript變量的類型是如何決定的
JavaScript中變量的資料類型是js引擎決定的;
6.3:typeof關鍵字
檢查變量代表的具體資料類型
document.write(typeof name);
document.write(typeof age);
document.write(type 18);
6.4:資料類型
(1):基本資料類型
數值類型(Number):判斷是否是數值類型isNaN();
布爾類型(Boolean)
字元串類型(String)
null:空值 var sex=null;結果為null;
null類型隻有一個值,就是null,
undefined:表示不存在的值或者尚未指派的變量,對一個變量隻聲明不指派或者賦予一個不存在的屬性值,都會使這個變量的值為undefined
undefined類型隻有一個值undefined,當聲明的變量未初始化的時候,該變量的預設值就是undefined
document.write(null==undefined);結果為true;
null和undefined的差別:null表示尚未存在的對象(typeof null),undefined聲明變量但未對其初始化時賦予該變量的值
(2):複合資料類型(引用資料類型)
對象:var obj=new Object();
數組:var arr=new Array();
函數:var test=function(){
console.log("函數的使用");
}
//調用函數
test();
6.5:轉換成數值
(1):轉換成整形:parseInt();
(2):轉換成浮點型:parseFloat();
(3):Number()函數
(4):注意:Number函數将字元串轉換為數值比parseInt函數嚴格的多,基本上隻要有一個字元無法轉換成數值,整個字元串都會被轉換為NaN;
7:運算符與表達式
7.1:表達式-表達式是用于JavaScript腳本運作時進行計算的式子,可以包含常量,變量,運算符
7.2:運算符
(1):算術運算符:
+,-,*,/,%,++,--
注意:
《1》+号用來連接配接兩個字元串
《2》js代碼的執行順序是從左到右,是以在+連接配接的表達式中,遇到字元串型資料之前,所有出現的數值型資料
(或者可以自動轉換為數值型的資料)仍被作為數值來處理,為了避免這種情侶,我們可以在表達式前拼一個空字元串
《3》隻要+連接配接的操作數中有一個是字元串型,js就會自動把非字元串型資料作為字元串型資料來處理
(2):字元連接配接符:通過+連接配接字元串
(3):指派運算符:=,+=,-= ,*= ,/= ,%=
(4):比較運算符:>, < ,>= ,<= ,== ,!= ,!== ,===,
比較運算符的結果為布爾類型
注意:==用于一般比較,隻要求值相等;===用于嚴格比較,值和類型都相等,隻要類型不比對就傳回false;=是指派
執行個體:document.write("1"==true);//true
document.write("1"===true);//false
(5):邏輯運算符:&&,||,!
&&:結論第一個表達式為false,第二個表達式不執行;第一個表達式為true,第二個表達式才執行。
||:結論第一個表達式為false,第二個表達式才執行;第一個表達式為true,第二個表達式不執行。
注意:邏輯運算符的結果為布爾類型,&&如果第一個表達式為false,造成短路,||如果第一個表達式為true,造成短路
(6):三元運算符:
exp1?exp2:exp3;
(7):其他運算符:
(1):void運算符,用來指明一個表達式傳回結果
(2):typeof運算符,用來傳回一個字元串,傳回的是操作數的資料類型
7.3:運算符的優先級-通過()改變優先級
8:流程控制
8.1:條件語句
if(exp)執行一句代碼
if(exp){執行代碼塊};
if(exp){exp為true執行代碼段}else{exp為false執行代碼段};
if...elseif...
switch...case
if嵌套
8.2:循環語句
(1):for循環:for(語句1;語句2;語句3){語句塊}
特殊情況如下
for(x in arr)
var arr={"張三","李四","阿五"};
for(x in arr){document.write(arr[x]);}
(2):while循環
while(條件語句1){語句塊}
(3):do...while循環(這個循環至少會執行一次,即使這個條件為false)
do{語句塊}while(條件語句1);
8.3:特殊循環控制
(1):break終止循環
(2):continue跳過當次循環,進入下次循環
9:Javascript函數
9.1:什麼是函數?
函數是完成某一功能的代碼段,函數是可重複執行的代碼段,函數友善管理和維護
9.2:函數的定義和使用
9.2.1:函數的分類:
自定義函數,我們自己編寫的函數,通過function關鍵字;
function 函數名稱([參數...]){代碼段;return 傳回值;}
系統函數,JavaScript自帶的函數,如alert函數
9.2.2:函數的聲明
常用方式:function 函數名([參數...]){代碼段;} 調用方式:函數名();
函數表達式:var 函數名=function([參數...]){語句塊;} 調用方式:var 變量=函數名(); 變量("實際參數");
9.2.3:函數的調用方式
普通調用:functionName(實際參數...)
通過指向函數的變量去調用:var myVar=函數名;myVar(實際參數);
9.3:函數傳回值
當函數無明确傳回值時,傳回的值就是undefined
當函數有傳回值時,傳回值是什麼就傳回什麼
9.4:參數
9.4.1:函數可以有參數也可以沒有參數,如果定義了參數,在調用函數的時候沒有傳值,預設設定為undefined
9.4.2:在調用函數時如果傳遞參數超過了定義時參數,js會忽略掉多餘的參數
9.4.3:可變參數
函數的參數清單可以是任意多個,并且資料類型可以是任意的類型
可以通過arguments對象實作可變參數的函數
9.5:局部變量,全局變量
9.5.1:局部變量
在函數體内聲明的變量,僅在函數體内可以使用
9.5.2:全部變量
函數體外聲明的變量,在變量聲明開始到腳本結束都可以使用
9.5.3:注意
盡量控制全局變量的數量,容易引發bug
最好總是使用var 語句來聲明變量
9.6:JavaScript建立動态函數
動态函數比較用Function對象來定義(Function是JavaScript中的一個對象,是固定不變的,規定Function對象的"F"必須大寫)
建立動态函數的基本格式:var 變量名=new Function("參數1","參數2","參數3","參數n","執行語句");
9.7:匿名函數
9.7.1:直接聲明一個匿名函數,立即使用;
9.7.2:好處:省得定義一個用一次就不用的函數,而且避免了命名沖突的問題。js中沒有命名空間的概念,是以很容易函數命名的沖突,一旦命名沖突以最後聲明為準
9.7.3:格式:
alert(function(i1,i2){return i1+i2; }(10,9));
9.8:JavaScript不支援函數的重載
javascript沒有方法重載的說法,如果兩個方法名字一樣,即使參數個數不一樣,那麼後面定義的就會覆寫前面定義,調用方法調用的是後面的方法。
9.9:JavaScript函數的特殊性
JavaScript中的函數本身就是變量,是以函數也可以當做普通變量來使用。
9.10:JavaScript全局函數
10:javascript全部函數
10.1:parseInt(string,radix):傳回轉換成整數的值
10.2:parseFloat(string):傳回轉換成浮點數的值
10.3:isFinite(value):檢測某個是否是無窮值
10.4:isNaN(value):檢測某個值是否是NaN,檢測是否是非數字值,如果值為NaN傳回true,否則傳回false
var a="111";
alert(isNaN(a));
10.5:encodeURI(uri):将字元串編碼為URI
注意:使用decodeURI()方法可以編碼URI(通用資源辨別符:UniformResourceIdentifier,簡稱"URI")
對以下在URI中具有特殊含義的ASCII标點符号,encodeURI()函數不會進行轉義的:. / ? : @ & = + $ #(可以使用encodeURIComponent()方法分别對特殊含義的ASCII标點符号進行編碼)
10.6:decodeURI(uri):解碼某個編碼的URI
10.7:encodeURIComponent():将字元串編碼為uri元件
10.8:dncodeURIComponent():解碼一個編碼的uri元件
10.9:escape():對字元串進行編碼
10.10:unescape():解碼由escape()編碼的字元串
10.11:eval():将javascript字元串當作腳本來執行
注意:
如果參數是一個表達式,eval()函數将執行表達式,如果參數是javascript語句,eval()将執行javascript語句
eval()函數是一種由函數執行的動态代碼,比直接執行腳本慢很多
慎重使用eval()函數,盡量不用,保證程式的安全性
var str="alert('測試')";
eval(str);
10.12:Number(object):把對象的值轉換為數字
注意:如果對象的值無法轉換為數字,Number()函數傳回NaN
如果參數的Date對象,Number()傳回從1970年1月1日到現在所經曆的毫秒數
10.13:String:把對象的值轉換為字元串
String()函數傳回與字元串對象的toString()方法值一樣
var b=new Number(true);
alert(b);
var c=new String(123);
alert(c+111);
11:事件
11.1:什麼是事件?
指的是文檔或者浏覽器視窗發生的一些特定互動瞬間,我們可以通過偵聽器(或者處理程式)來預定事件,以便事件發生的時候執行相應的代碼
11.2:滑鼠事件
onmousedown:滑鼠按鈕被按下
onmousemove:滑鼠被移動
onmouseout:滑鼠從某元素移開
onmouseover:滑鼠移到某元素之上
onmouseup:滑鼠按鍵被松開
11.3:鍵盤事件
onkeydown:某個鍵盤按鍵被按下
onkeypress:某個鍵盤按鍵被按下并松開
onkeyup:某個鍵盤按鍵被松開
11.4:表單事件
onblur:元素失去焦點
onchange:域的内容被改變
onclick:當使用者點選某個對象的調用的事件句柄
ondblclick:當使用者輕按兩下某個對象的調用的事件句柄
onerror:在加載文檔或圖像時發生錯誤
onfocus:元素獲得焦點
onselect:文本被選中
onsubmit:确認按鈕被點選
onunload:使用者退出頁面
12:DOM
12.1:DOM簡介:當網頁被加載時,浏覽器會建立頁面的文檔對象模型(Document Object Model)
javascript能夠改變頁面中的所有HTML元素
javascript能夠改變頁面中的所有HTML屬性
javascript能夠改變頁面中的所有css樣式
12.2:檢視HTML元素
注意:通過id找到HTML元素--document.getElementById("info");
通過标簽名找到HTML元素--document.getElementsByTagName
通過标簽的name屬性擷取元素--document.getElementsByName
12.3:改變HTML輸出流document.write
12.4:修改HTML内容:使用innerHTML屬性
13:Javascript數組的學習和應用
13.1:數組的建立
1:document.write("1:建立一個空數組"+"<br/>");
var arr1=new Array();
2:document.write("2:指定數組的長度"+"<br/>");
var arr2=new Array(5);
3:document.write("3:建立數組并初始化參數"+"<br/>");
var arr3=new Array(9528,"小别","男");
4:document.write("4:建立一個數組"+"<br/>");
var arr4=[];
5:document.write("5:使用括号[],并且傳入初始值"+"<br/>");
var arr5=[12,23,45,6,8];