DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 完美解決一個事件激活多個函數
完美解決一個事件激活多個函數
編輯:關於JavaScript     

  如果你的網頁中一個“OnLoad”事件要激活兩個以上的javascript函數,那怎麼辦呢?小陽曾查閱了不少資料,結果都不盡如人意,無非是程序員根據情況,把要激活的函數統一放在一個函數裡激活。

  但作為一個程序員,編寫的代碼的適用性是很重要的。請看下面一個例子:

  

  運行後你會發現,它只跳出一個“這是JS腳本調用的函數”的警告框。< BODY>標簽中要求激活的函數被“忽略”了。當然你可以運用前面提過的方法,把兩個函數放一個函數裡激活。但這樣有不少弊端,特別是如果把這段JavaScript代碼寫成一個"myjs.js"文件,要用它的話直接加上< script language="JavaScript" src="myjs.js">< /script>即可,但如果還要在引用文件的頁面中根據情況修改標簽或者添加一段代碼,多麻煩呀。這就降低了代碼的適用性了。

  可不可以在編寫JavaScript代碼時就設計好,如果前面OnLoad事件已經有函數要激活,讓它仍然激活前面的函數,但同時也激活本段代碼所需要的函數?答案是肯定的。我們先看下這段代碼:

  

  運行後其中一個警告框中提示:

  function anonymous()
  {
  alert("這是標簽調用的函數")
  }

  發現什麼了嗎?“document.body.onload.toString()”就是上面這段函數代碼!我們這段字符串作為代碼的一部分運行,那麼我們就多了一個函數“anonymous()”,於是將這個函數和我們現在需要激活的函數一起激活就行了!

  下面我們以第一次提到的代碼為例進行修改,得到最終代碼:

  

  上段代碼中,變量myActive是JS代碼中要激活的函數,eval(string)函數是把其字符串參數當作是JavaScript腳本來運行。我們把document.body.onload.toString()中的“anonymous()”替換為“bodyload()”,得到一個新函數“bodyload()”,它包含了所有原來要激活的函數,再把函數“bodyload()”和我們要激活的函數一起在OnLoad事件中激活。

  為什麼要把“anonymous()”替換為“bodyload()”呢?因為這個方法適用於所有事件(例如OnMouseOver),而所有事件toString()都是得到“anonymous()”,為了不和其它事件也用了這個方法沖突,我們把它替換掉。在其它事件中也依此替換即可。

  好了,我們運行一下最終代碼,如你所願地兩個函數都激活了吧?添加的代碼也挺簡單,有挺強的適用性。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved