一、默認(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è)texttextarea域失去焦點(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)texttextarea對(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)用戶單擊texttextarea以及select對(duì)象時(shí),產(chǎn)生該事件。此時(shí)該對(duì)象成為前臺(tái)對(duì)象。

 

       該事件適用對(duì)象:buttoncheckboxfileUpload,layer,passwordradio,resetselect,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,checkboxfileUpload,layerpassword,radio,resetselect,submit,text,textareawindow。

 

       下面的例子中,瀏覽器的起始背景色為“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í)器