2009-11-27 108 views
0

這是問題的延續:爲什麼這個javascript不工作?

innerHTML working in FF but not in IE!

上述問題得到解決[感謝名單到pygorex1]。但我想知道爲什麼下面的代碼片段不起作用。

if (window.addEventListener){ 
    window.addEventListener('load', addDateFormatInfo, false); 
    window.addEventListener('load', loadNewElements, false);  
} else if (window.attachEvent){ 
    window.attachEvent('onload', addDateFormatInfo);  
    window.attachEvent('onload', loadNewElements); 
} 

function loadNewElements(){ 
    document.createElement("showDateFormat"); 
} 

function addDateFormatInfo(){ 
    var dateFormatHolder = document.getElementsByTagName("showDateFormat");  
    if (dateFormatHolder){    
     for (i = 0 ; i < dateFormatHolder.length; i++){ 
       dateFormatHolder[i].innerHTML = '<div class="infoSmall" ><span>(mm/dd/yyyy)</span></div>';            
     } 
    } 
} 

提供它是工作在FF但不是在IE
此外,如果代替創建新的方法loadNewElements和附加此,如果我將直接在我的JavaScript編寫document.createElement("showDateFormat");加載事件[不任何方法],然後代碼按預期工作[在IE和FF中]。爲什麼是這樣?

回答

3

您需要先撥打loadNewElements之前的其他方法。

如果它不工作,這樣寫:

if (window.addEventListener){ 
    window.addEventListener('load', addDateFormatInfo, false); 
    //window.addEventListener('load', loadNewElements, false); // Don't need this for non-IE browsers 
} else if (window.attachEvent){ 
    loadNewElements(); // Will always be executed before the other one 
    window.attachEvent('onload', addDateFormatInfo);  
} 
+0

我已經放在'window.addEventListener( '負荷',loadNewElements,假);'如果我在'loadNewElements'方法中保留'alert',它會在'addDateFormatInfo'前執行。即使在IE中它不起作用 – 2009-11-27 13:05:38

+0

您是否在另一個attachEvent調用之前放置了「window.attachEvent('onload',loadNewElements); 」? – 2009-11-27 13:12:15

+0

@Fabien:看到代碼,我已經下了「loadNewElements」剛剛安裝了「addDateFormatInfo」,所以'loadNewElements'總是得到前執行後'addDateFormatInfo' – 2009-11-27 13:19:44

2

我會嘗試這樣做:

if (window.addEventListener){ 
    window.addEventListener('load', function() {loadNewElements(); addDateFormatInfo()}, false); 
} else if (window.attachEvent){ 
    window.attachEvent('onload', function() {loadNewElements(); addDateFormatInfo()});  
} 
+0

我會試試這個,到時它是+1;) – 2009-11-29 10:02:09