一、默認函數
JavaScript提供了一些默認的函數
編碼函數escape():將非字母、數字字符轉換成ASCII碼
譯碼函數unescape():將ASCII碼轉換成字母、數字字符
求值函數eval()
數值判斷函數isNaN():判斷一個值是否為非數值類型
整數轉換函數parseInt():將不同進制(二、八、十六進制)的數值轉換成十進制整數
浮點數轉換函數parseFloat():將數值字串轉換成浮點數
1、eval()函數
求值函數eval()的格式為:eval(<表達式>)
下面的例子將用eval函數得到一個文本框的值,
然后通過點擊按鈕彈出一個對話框將其輸出。
<script>
function show(obj)
{
var str=eval("document.Form."+obj+".value");
alert(“你輸入的姓名是:”+str);
}
</script>
<form name="Form" id="Form">
姓名:
<input name="name" type="text" value="韋小寶">
<input name="button" type="button" value="提交" onClick=show("name")>
</form>
2、isNaN()函數
數值判斷函數isNaN()的格式:isNaN(<量>)
下例中isNaN函數將判斷變量是否不是數值,并輸出判斷結果。
<script>
var x=15;
var y="黃雅玲";
document.write("<LI>x不是數值嗎?",isNaN(x));
document.write("<LI>y不是數值嗎?",isNaN(y));
</script>
3、parseInt()函數
整數轉換函數parseInt()的功能是將不同進制(二、八、十六)的數值轉換成十進制整數。
格式:parseInt(數值字串[,底數])
下面演示了將一個二進制數和一個十六進制數轉換成十進制數。
<script>
document.write("1101<sub>2</sub>=",parseInt("1101",2),"<sub>10</sub><br>");
document.write("BFFF<sub>16</sub>=",parseInt("BFFF",16),"<sub>10</sub><br>");
</script>
4、parseFloat()函數
parseFloat()是浮點數轉換函數,它將數值字串轉換成浮點數。
格式:parseFloat(數值字串)
<script>
document.write(parseInt("3.1234A56"),"<br>");
document.write(parseFloat("3.1234A56"),"<br>");
</script>
5、自定義函數
函數是獨立于主程序的、具有特定功能的一段程序代碼塊。
JavaScript函數定義
function 函數名(參數表,變元)
{
函數體;
return 表達式;
}
說明:
·當調用函數時,所用變量或字面量均可作為變元傳遞。
·函數由關鍵字function定義。
·函數名:定義自己函數的名字。
·參數表,是傳遞給函數使用或操作的值,其值可以是常量、變量或其它表達式。
·通過指定函數名(實參)來調用一個函數。
·函數的返回值是可選項,如果需要返回值,就必須使用return語句將值返回。
·函數名對大小寫是敏感的。
約定:
·函數名:易于識別(同變量命名規則)。
·程序代碼:模塊化設計。
·函數位置:按邏輯順序,集中置頂。
6、函數中的形式參數
在函數的定義中,我們看到函數名后有參數表,這些參數變量可能是一個或幾個。那么怎樣才能確定參數變量的個數呢?在JavaScript中可通過arguments.length來檢查參數的個數。
<script>
function function_Name(exp1,exp2,exp3,exp4)
Number =function_Name.arguments.length;
if(Number>1)
document.wrile(exp2);
if(Number>2)
document.write(exp3);
if(Number>3)
document.write(exp4);
</script>
函數的調用
格式:函數名([參數[,參數...]])
下面的例子演示了沒有返回值的函數的定義及調用。
<script>
function showName(name)
{
document.write("我是"+name);
}
showName("玲玲"); //函數調用
</script>
上例中的function showName(name)為函數定義,其中括號內的name是函數的形式參數,這一點與C語言是完全相同的,而showName(“玲玲”)則是對函數的調用,用于實現需要的功能。
下面的例子演示了帶返回值的函數的定義及調用。
<script>
function showName(name)
{
str="我是" +name;
return str;
}
document.write(showName("周伯通"));
</script>
二、函數與事件
事件驅動及事件處理的基本概念
JavaScript是基于對象(Object-Based)的語言,這與Java不同,Java是面向對象的語言。而基于對象的基本特征,就是采用事件驅動(Event Driven)。通常鼠標或熱鍵的動作我們稱之為事件(Event),而由鼠標或熱鍵引發的一連串程序的動作,稱之為事件驅動(Event Driver)。而對事件進行處理的程序或函數,我們稱之為事件處理程序(Event Handler)。
事件處理程序
瀏覽器響應某個事件,實現用戶的交互操作而進行的處理(過程)。
事件處理程序的調用:瀏覽器等待用戶的交互操作,并在事件發生時,自動調用事件處理程序(函數),完成事件處理過程。
HTML標簽屬性:
格式:<tag on事件=“<語句組>|<函數名>”>
由于在JavaScript中對象事件的處理通常由函數(function)來完成,且其基本格式與函數一樣,所以可以將前面所介紹的所有函數作為事件處理程序。
格式如下:
function 事件處理名(參數表)
{
事件處理語句集;
……
}
三、事件驅動
JavaScript事件驅動中的事件是通過鼠標或熱鍵的動作引發的。它主要有以下幾個事件:
單擊事件onClick
改變事件onChange
選中事件onSelect
獲得焦點事件onFocus
失去焦點onBlur
載入文件onLoad
鼠標指示事件onMouseOver
提交事件onSubmit
1、單擊事件onClick
當用戶單擊鼠標按鈕時,產生onClick事件。同時onClick指定的事件處理程序或代碼將被調用執行。通常在下列基本對象中產生單擊事件:
button(按鈕對象)
checkbox(復選框)或(檢查列表框)
radio(單選鈕)
reset buttons(重要按鈕)
submit buttons(提交按鈕)
比如,可以通過下面的按鈕激活change()函數,當然change()函數是需要另外提供的:
<form>
<input type="button" value=“” onClick="change()">
</form>
在onClick等號后,可以使用自己編寫的函數作為事件處理程序,也可以使用JavaScript的內部函數,還可以直接使用JavaScript的代碼等。
<body>
<form>
請輸入基本資料:<br>
姓名:
<input type="text" name="usr" size="8">
<input type="button" value="請單擊" onClick="alert('謝謝你的填寫...')">
</form>
</body>點擊“請單擊”按鈕后將引發onClick事件,即彈出“謝謝你的填寫...”的對話框。
2、改變事件onChange
當一個text或textarea域失去焦點并更改值時觸發onChange事件,當select下拉選項中的一個選項狀態改變后也會引發該事件。
事件適用對象fileUpload、select、text、textarea。
下面的例子在文本框的內容改變后,將彈出一個顯示“內容即將改變!”的對話框:
<form>
<input type="text" name="Test" value="Test" onChange="alert('內容即將改變!')">
</form>
頁面運行后在文本框中輸入內容,即內容發生改變,然后將鼠標拖走,就會引發.
3、onChange事件
選中事件onSelect
當text或textarea對象中的文字被選中后(文字高亮顯示),引發該事件。
下面的例子中,當文本框的內容被選中后,將彈出一個顯示“內容已被選中!”的對話框:
<form>
<input type="text" name="Test" value="Test" onSelect="alert('內容已被選中!')">
</form>
4、獲得焦點事件onFocus
當用戶單擊text或textarea以及select對象時,產生該事件。此時該對象成為前臺對象。
該事件適用對象:button,checkbox,fileUpload,layer,password,radio,reset,select,submit,text,textarea,window。
下面的例子中,當鼠標移到文本域的地方即獲得焦點時,立刻彈出一個提示“已經獲得焦點!”的對話框:
<input type="textarea" value="" name="valueField" onFocus="alert('已經獲得焦點!')">
5、失去焦點onBlur
當text對象或textarea對象以及select對象不再擁有焦點、而退到后臺時,引發該事件,onBlur事件與onFocus事件是一個對應的關系。
該事件適用對象:button,checkbox,fileUpload,layer,password,radio,reset,select,submit,text,textarea,window。
下面的例子中,瀏覽器的起始背景色為“lightgrey”,當鼠標移到文本域的地方即獲得焦點時,瀏覽器的背景色變為“red”,當鼠標焦點移動到瀏覽器的其他地方時,瀏覽器的背景色變為“white”。
<body bgColor="lightgrey">
<form>
<input type="text" onFocus="document.bgColor='red'" onBlur="document.bgColor='white'" >
</form>
</body>
6、載入文件onLoad
當文件載入時,產生該事件。onLoad的作用就是在首次載入一個文檔時檢測cookie的值,并用一個變量為其賦值,使它可以被源代碼使用。
下面的代碼在文檔打開時,將彈出提示“建議瀏覽器的分辨率:800x600”的對話框。
<script>
function show()
{
var str="建議瀏覽器的分辨率:800x600";
alert(str);
}
</script>
<body onload="show();">
7、鼠標指示事件onMouseOver
當鼠標指到相應的位置時引發的事件。
事件適用對象:layer,link。
下面的例子中,用href給“Click me”加上一個超鏈接,當鼠標指到超鏈接“Click me”時,將在狀態欄提示“Click this if you dare!”。
<a href="http://www.myhome.com/"
onMouseOver="window.status='Click this if you dare!'; return true">
Click me
</a>
當鼠標指到文字“Click me”上時,將在狀態欄顯示提示文字“Click this if you dare!”
8、提交事件onSubmit
它是在點擊提交按鈕時引發的事件。
事件適用的對象:form
語法:onSubmit="handlerText"
下面的例子中,在點擊“提交”按鈕時,就會彈出一個“你確認提交嗎?”的提示對話框。
<form onSubmit="alert('你確認提交嗎?')">
<input type="text" name="txt" value="測試文本">
<input type="submit" value="提交">
</form>
補充:定時器
定時器是用以指定在一段特定的時間后執行某段程序。常用的定時器函數有以下幾個:
setTimeout():定時器
clearTimeout():終止定時器
setInterval():設置定時器
clearInterval():取消使用setInterval()設置的定時器