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