Почему этот JavaScript не работает? - PullRequest
0 голосов
/ 27 ноября 2009

Это продолжение вопроса:

innerHTML работает в FF, но не в 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 и добавления его для загрузки события, если я напишу document.createElement("showDateFormat"); непосредственно в моем javascript [не в любом методе], то код работает как положено [как в IE, так и в FF] , Почему так?

Ответы [ 2 ]

3 голосов
/ 27 ноября 2009

Вам нужно вызвать 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);    
}
2 голосов
/ 27 ноября 2009

Я бы попробовал сделать это:

if (window.addEventListener){   
  window.addEventListener('load', function() {loadNewElements(); addDateFormatInfo()}, false);  
} else if (window.attachEvent){ 
  window.attachEvent('onload', function() {loadNewElements(); addDateFormatInfo()});    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...