window.onload отлично работает со страницей aspx, но не в обычном htm

Может кто-нибудь, пожалуйста, объясните мне, почему window.onload отлично работает в aspx, но не в xhtml?

этот пример window.onload прекрасно работает в aspx:

<script type="text/javascript">
    //<![CDATA[
      //handles the collapse of submenu items on navigation side menu

 function toggle() {

     document.getElementById('node4').style.display = '';

 }

 window.onload = toggle;

//]]>
 </script>

пока этот пример window.onload не работает в строгом XHTML 1.0. (Он не запускает мгновенно countDownClock при загрузке страницы):

<script type="text/javascript">
   //<![CDATA[
   //handles the collapse of submenu items on navigation side menu

   function countDownClock() {
       today = new Date();
       openingDay = new Date();
       openingDay.setMonth(2, 23);
       (today > openingDay) ? openingDay.setFullYear(2013) : openingDay.setFullYear();
       openingDay.setHours(9, 0, 0, 0);
       document.getElementById("mallclock").dayNow.value = showDate(today);
       document.getElementById("mallclock").timeNow.value = showTime(today);

       var daysLeft = dayDiff(today, openingDay);
       var hoursLeft = hoursDiff(today, openingDay);
       var minutesLeft = minutesDiff(today, openingDay);

       daysLeft = ((hoursLeft - 24) >= 0) ? daysLeft + (hoursLeft / 24) : daysLeft;
       hoursLeft = ((hoursLeft - 24) >= 0) ? hoursLeft - ((hoursLeft / 24) * 24) : hoursLeft;
       hoursLeft = ((minutesLeft - 60) >= 0) ? hoursLeft + (minutesLeft / 60) : hoursLeft;
       minutesLeft = ((minutesLeft - 60) >= 0) ? minutesLeft - ((minutesLeft / 60) * 60) : minutesLeft;

       document.getElementById("mallclock").days.value = daysLeft;
       document.getElementById("mallclock").hours.value = hoursLeft;
       document.getElementById("mallclock").minutes.value = minutesLeft;

   }

   window.onload = countDownClock;

 //]]>
</script>

запускается только событие body, для которого установлено значение countDownClock через 1 минуту

   <body onload = "setInterval('countDownClock()', 60000)">

1 ответ

Решение

Ага, редактирование сделало все различия.

Страница может иметь только один обработчик для load событие, так что если вы добавите один с помощью window.onload и добавьте еще один, используя body onload атрибут, только один из них будет работать.

Поместите оба действия в один и тот же обработчик:

window.onload = function(){
  countDownClock();
  window.setInterval(countDownClock, 60000);
};
Другие вопросы по тегам