2009-11-27 76 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