2013-03-31 69 views
2

Sooooo,我有一個JS問題。我對Web開發相當陌生,所以我不完全確定我在做什麼錯我的JS。Javascript函數命令

//create script for #mainHeading focus @ pageload -- heading 1 
    window.onload = function() { 
     var mainHeading = document.getElementById("mainHeading"); 
     mainHeading.style.textShadow = '0px 0px 0px #fff' 
    } 

//create script for #subHeading focus @ pageload -- heading 2 
    window.onload = function() { 
     var subHeading = document.getElementById("subHeading"); 
     subHeading.style.textShadow = '0px 0px 0px #fff' 
      } 

所以基本上我寫了我的第一個標題的功能,當頁面加載時「焦點」。然後,我決定添加具有相同功能的第二個標題。現在,當我加載我的頁面時,只加載第二個標題,而不是兩者。

這是爲什麼?

在此先感謝!

回答

3

您正在替換onload函數。

正確的解決辦法是添加使用addEventListener事件偵聽器,他們是添加劑:

window.addEventListener('load', function1); 
window.addEventListener('load', function2); 
7

因爲你覆蓋第一個功能。不要設置這樣的屬性...使用addEventListener或等效代碼:

window.addEventListener("load", function() { 
    // First event handler 
}); 
window.addEventListener("load", function() { 
    // Second event handler 
}); 

此方法允許您根據需要註冊成爲許多事件處理程序。請注意,儘管Internet Explorer的舊版本不支持,但您可能需要檢測它並在舊版本的IE中使用attachEvent

目前,您只需設置屬性的值。考慮下面的代碼,這是有效等效的:

var obj = {}; 
obj.x = 10; 
obj.x = 20; 
console.log(obj.x); // 20 
0

您正在覆蓋第二個方法。您需要將它們合併在一起:

window.onload = function() { 
    var mainHeading = document.getElementById("mainHeading"), 
     subHeading = document.getElementById("subHeading"); 

    mainHeading.style.textShadow = subHeading.style.textShadow = 
                '0px 0px 0px #fff'; 
}; 

您也可以做其他答案。這似乎也很好。

1

而不是取代你的onload函數,只需添加說明即可。尼斯老學校,因此跨瀏覽器兼容:

window.onload = function() { 
    var mainHeading = document.getElementById("mainHeading"), 
     subHeading = document.getElementById("subHeading"); 
    mainHeading.style.textShadow = '0px 0px 0px #fff'; 
    subHeading.style.textShadow = '0px 0px 0px #fff'; 
} 

祝你好運!