Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Несколько функций на событие onLoad (https://javascript.ru/forum/misc/48833-neskolko-funkcijj-na-sobytie-onload.html)

tai 18.07.2014 15:51

Несколько функций на событие onLoad
 
Добрый день!

Помогите навесить несколько функций на событие

Пробовал так
<script type="text/javascript">
    function init(){
        startTimer();
        startSecund();
        startTimerTorgStart();
	};
</script>

<body onLoad="init()">

и так
<script type="text/javascript">
    function addEvent(elem, type, handler){
	  if (elem.addEventListener){
	    elem.addEventListener(type, handler, false)
	  } else {
	    elem.attachEvent("on"+type, handler);
	  }
	} 
    function init(){
	  addEvent('body','load',startTimer());
	  addEvent('body','load',startSecund());
	  addEvent('body','load',startTimerTorgStart());
	};
</script>

<body onLoad="init()">


В 1-м случае функции не срабатывают, во 2-м срабатывает только одна

skrudjmakdak 18.07.2014 15:53

addEvent('body','load',startTimer); - убери скобки. ибо ты выполняешь функцию, а надо присвоить

newobject 18.07.2014 16:33

можно вот так


init={
startTimer: function(){alert(1)},
startSecund: function(){alert(2)},
iterThis: function(){for(var i in init){
if(i!=="iterThis")init[i]()
}},
__proto__: null
}
onload=init.iterThis

Или посмотри на addEventListener, там что то есть, типа load, ЕМНИП. Есть еще onDomContentLoader, но я тонкостей не знаю, п-ть не буду.

newobject 18.07.2014 16:38

Да, вот так тоже катит. Этот вариант модней, на сегодняшний день, наверное. Очередная свистоперделка EcmaScript, очень_нужная(TM)

startTimer=function(){alert(1)},
startSecund=function(){alert(2)},
window.addEventListener("load", startTimer)
window.addEventListener("load", startSecund)

newobject 18.07.2014 16:49

Кста, твой вариант тоже рабочий, только засунь последнюю инструкцию в скрипт и измени вот так


startTimer=function(){alert(1)}
startSecund=function(){alert(2)}

function init(){
startTimer();
startSecund();
};

onload=init


если надо именно body (кстати, зачем?), сделай document.body.onload=...

newobject 18.07.2014 16:57

Да, и последнее: смешно, но твой 1 вариант у меня в опере фф и хроме работает:) У тебя там ошибка в другом наверное.


Часовой пояс GMT +3, время: 03:17.