JScript/JavaScript的參考文檔甚少,也不是很詳細(xì),,很多語法也是一知半解,,今天在寫事件函數(shù)時碰到了一個問題,現(xiàn)討論如下,。 眾所周知,,在處理HTML元素的事件時可以有多種方法寫代碼: 1、直接寫在HTML元素的on???屬性中,,如: <INPUT TYPE="BUTTON" ONCLICK="alert(‘Clicked!‘)" VALUE="Click Me!"> 或
<INPUT TYPE="BUTTON" ONCLICK="alerter()" VALUE="Click Me!"> 這里alerter()是一個寫好的JScript函數(shù),。2、使用HTML元素對象的事件屬性,,如: <INPUT ID="button1" TYPE="BUTTON" VALUE="Click Me!"> 3,、使用<SCRIPT FOR>,如:<SCRIPT LANGUAGE="JavaScript"> button1.onclick = alerter function alerter() { window.alert("You clicked the button!") } </SCRIPT> <INPUT ID="button1" TYPE="BUTTON" VALUE="Click Me!"> 4,、使用attachEvent函數(shù),,如:<SCRIPT FOR="button1" EVENT="onclick" LANGUAGE="JavaScript"> alert("You clicked the button!") </SCRIPT> <INPUT ID="button1" TYPE="BUTTON" VALUE="Click Me!"> <SCRIPT LANGUAGE="JavaScript"> button1.attachEvent("onclick", alerter) function alerter() { window.alert("You clicked the button!") } </SCRIPT> 常用的是第1、2種方法,,但有些時候使用第2種方法還是比較合適,,比如寫body.onload時,不一定方便把onLoad屬性寫在<body>元素內(nèi),。特別是ASP.Net中編寫Web用戶控件(.ascx)時,,它并沒有<body>元素,。于是我寫了下面的腳本: window.onload=alert("Load!"); 很高興地發(fā)現(xiàn)它也能夠運(yùn)行,也沒有出錯,。但是很奇怪,,它的下一條語句總是不會執(zhí)行,比如接著還有一條alert("Hi");打開網(wǎng)頁后只會看到一個提示“Load!”的對話框,,不會出現(xiàn)“Hi”,。而且照理應(yīng)該先出現(xiàn)“Hi”,再出現(xiàn)“Load”的,。原來按照方法2的寫法,,事件函數(shù)是不能帶參數(shù)的!只能寫成window.onload=funcname;的形式,,而如果想帶參數(shù)地調(diào)用一個或多個函數(shù),,可以把這些語句寫到一個函數(shù)內(nèi)。也可以寫成: window.onload=function(){alert("Load!");}; 這樣相當(dāng)于產(chǎn)生一個匿名函數(shù),。而按原來的寫法在window.onload語句時已經(jīng)錯了,,自然不會再執(zhí)行下面的語句了。看來想問題還是要謹(jǐn)慎,,不能想當(dāng)然,。 |
|