Javascript函数和事件
一、默認函數
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()設置的定時器
總結
以上是生活随笔為你收集整理的Javascript函数和事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript绑定事件的方法[3种
- 下一篇: 好用的Eclipse 插件