window. 是指當頁面加載完後執行的函數 但是這個函數有個缺點 就是不能執行多個window.onload 當第二次調用window. 第二次會覆寫第一次的函數 如下代碼:
<style>
.small{ width:100px;height:100px;border:2px solid red; background:#906;}
.big{ width:200px; height:200px;border:2px solid red; background:#906;}
</style>
<div id="small" class="small">aaaa</div>
<script>
window.onload = initAll;
function initAll(){
var oo = document.getElementById("small");
oo.onclick = toBig;
function toBig(){
oo.className = "big";
oo.onclick = tosmall;
}
function tosmall(){
oo.className = "small";
oo.onclick = toBig;
}
}
</script>
這上面的js代碼 我是測試 一張圖檔時候 圖檔變大 當我再點選時候 圖檔變小類似效果!改變他們的類!但是當我底部又有一個window. 就是第二次的window. 就會覆寫第一次的 比如<script>window. function(){alert(1)}</script> 都可以測試下,但是現在的問題是該怎麼解決這個問題呢!恩 可以先判斷下 看看上面是否已經定義了這個函數 如果定義的話 那麼我讓他先儲存一個變量中,然後當執行下個函數時候 再去執行它!這樣就可以二個函數一起執行呢!1 先判斷下 如下代碼:
<script>
var temp ;
//window.
if(typeof window.onload == "function"){
//讓目前的函數儲存在一個變量中
temp = window.
}
window.onload = function(){
//那麼現在我想不但要想執行我這個目前的函數 那麼上面的函數也要執行到 是以要調用下上面的函數
alert("我是最後一次執行到");
temp();
//上面的代碼都可以執行到 但是現在我們要封裝一個方法 addEvent
</script> -->
但是如果頁面上有多個這樣的事件監聽函數時候 我們用這種方式 也并不是很友善 我們可以先封裝一個函數 然後再調用它 ! 這個函數定義三個參數 第一個是“目前的對象obj” 第二個是"evt 事件類型",第三個是函數"fn",定于代碼如下:
// window.
function addEvent(obj,evt,fn){
// 現在要想的問題是 要給某個對象注冊多次事件監聽函數
//檢測目前的事件是否存在
var saved;
if( typeof obj["on" + evt] =="function"){
saved = obj["on" + evt];
obj["on"+evt] = function(){
if(saved) saved();
fn();
</script>
綜合上面的所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無标題文檔</title>
<script>
// window.onload = initAll;
</head>
<body>
<div id="small" class="small">aaaa</div>
addEvent(window,"load",initAll);
<!-- <script>
var temp ;
//window.onload = function(){} //這樣的話會覆寫掉上面的函數 那麼現在的問題是應該我們檢測下 是否已經給某個對象注冊了事件
if(typeof window.onload == "function"){
//讓目前的函數儲存在一個變量中
temp = window.
window.onload = function(){
//那麼現在我想不但要想執行我這個目前的函數 那麼上面的函數也要執行到 是以要調用下上面的函數
alert("我是最後一次執行到");
temp();
//上面的代碼都可以執行到 但是現在我們要封裝一個方法 addEvent
</script> -->
function test(){
alert(1);
addEvent(window,"load",test);
</script>
</body>
</html>
像上面這樣運作代碼 可以給某個對象注冊多個監聽函數!
<a href="http://down.51cto.com/data/2359481" target="_blank">附件:http://down.51cto.com/data/2359481</a>
本文轉自 塗根華 51CTO部落格,原文連結:http://blog.51cto.com/tugenhua/743067,如需轉載請自行聯系原作者