JavaScript權威指南
1.初識
javascript+DOM
Document對象
javascript與HTML表單進行互動
對錶單域進行讀寫:
表單html
<form name="loandata">
<input type="text" name="principal",size="12">
</form>
讀寫的javascript代碼
var principal=document.loandata.principal.value;
document.loandata.principal.value=100;
列印:document.write();document.write(msg,"<br>");
警示:alert();
2.基本文法
a.大小寫敏感,無類型。
b.句尾分號可省略,但還是加了比較好
c.注釋://或者/**/
d.直接量:數字,"字串"或'字串',true,false,null。
e.javascript不區分整型和浮點型,都是浮點型。
f.toString(進位),可以將一個數字轉換為指定進位的字串。
g.isNaN()和isFinite()
h.字串可以用雙引號或者單引號,單與html的引號配合使用時,需要錯開使用。如:
<a href="" onclick="alert('hello')">click me</a>
i.函數定義,需要使用到function關鍵字。不需要定義返回的類型。
j.具有實值型別和參考型別
k.javascript支援記憶體回收
l.全域對象&調用對象:最外層程式本身,就是全域對象。程式全域變數就是這個全域對象的成員。可以在全域層次(全域對象層次)使用this來訪問全域變數(即全域對象的成員)。在具體的用戶端中,這個全域對象就是Window對象。調用對象就是局部變數所附屬的對象。
m.運算子。in:一個字串是否為一個對象的屬性。
instanceof:一個對象是否為一個類的執行個體。相當於c#中的is
typeof():輸入一個變數,返回一個字串,指名其是什麼類型,有點像一個函數。(c#的typeof是輸入一個類型,返回一個system.type的執行個體)
n.javascript的switch語句中,case支援運行時變數,而c,c#等必須是編譯時間刻常量
o.for in語句:for(變數 in 對象){},將訪問某個對象的每個屬性名稱。(與c# 中的foreach不同,c#的foreach是訪問集合的每個元素)。可以在語句中利用對象的屬性名稱訪問屬性:對象[屬性名稱](該屬性名稱就是for中的變數)。如:for(var prop in my_object)
{
document.write("name:"+prop+",value"+my_object[prop]);
}
p.javascript的異常處理
try
{}
catch(ex)
{}
finally
{
}
ex沒有類型。
r.函數的嵌套定義:
函數的動態定義:(匿名函數)
var f=new function("x","y","return x*y");
函數直接量
函數是一種資料類型:類似函數指標(委託)
函數的Arguments對象:在函數內部通過arguments訪問傳入的參數,可以用於編寫接受任意個參數的函數。參數就從arguments[i]中獲得。另外,arguments.callee就是函數自己。
函數定義中,形參前不需要加類型或者var。
可以得到函數定義時候需要的參數個數:函數名稱.length,或者arguments.callee.length,可以與arguments.length比較,一個是期望的參數個數,一個是實際的參數個數
s.對象
對象直接量
對象屬性名稱的枚舉(for in)
定義一個自訂對象只需要定義其建構函式
t.數組
數組的定義 var a=new Array();
var a=new Array(1,2,3,4,5);
var a=new Array(10);//10個元素
var a=[1,2,3,4,5];//數組直接量
u.Regex
可以使用new RegExp來定義,也可以用直接量 var pattern=/s$/來定義
其Regex符號規則是Perl的子集.
常用符號
數字和字母:代表數字和字母本身
[abc]匹配a或b或c(注意:[]內的運算式,只匹配一個字元)
[^abc]匹配非abc的其他所有(^對整個[]起作用)
[a-zA-Z0-9]對所有大小寫字母和數字匹配,也可以使用其他轉義的代碼來表示一個範圍:
\w:[a-zA-Z0-9_]
\W:[^a-zA-Z0-9_]
\d:[0-9]
\D:[^0-9]
表達重複幾次:重複項的說明在模式運算式的後面
/\d{2,4}/:至少2個數字,至多4個數字
/\w{3}\d?/:正好3個字元,數字一個或者沒有
?:一個或者沒有{0,1}
+:一次或者多次{1,}
*:0次或者多次{0,}
3.用戶端的javascript
執行過程是瀏覽器HTML解析過程的一部分。按照順序執行。如果指令碼中有document.write()方法,那麼輸出的文檔被插入到</script>之後,當教本運行結束後,由HTML解析。瀏覽器會在執行教本的時候停止html的解析。
重要的對象
window對象:
frames
alert():阻塞,無返回
confirm():阻塞,返回true,false
prompt():阻塞,返回字串
setTimeout() :調用一次。setInterval重複調用,直到clearInterval
window.location.replace(url):定位到其他頁面
status:控制狀態列中顯示的資料
window.open():開啟新瀏覽器視窗。
document對象:
document.write()
document.writeln()
open()
close()
<img>用document.images[]訪問
<a>用links[]訪問
<applet>用applets[]訪問
訪問表單元素:
<form>用document.forms[]訪問,具有elements[]屬性:document.forms[1].elements[2]
訪問表單中的元素,除了可以通過elements指定序號,也可以直接指定其名稱,如
document.form1.OperatorLogin$UserName.focus();//是登入頁面中,將form1中的OperatorLogin$UserName擷取焦點。
表單的驗證:form的onsubmit事件。即使某個button是服務端控制項,但是如果表單的onsubmit返回false,點擊了該服務端控制項後,也不會提交表單,從而不會激發服務端事件。
問題;
<input type="submit" value="submit" />也會回調
具體是什嗎?如何在伺服器端捕捉該事件?