Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2014, 15:51
tai tai вне форума
Аспирант
Отправить личное сообщение для tai Посмотреть профиль Найти все сообщения от tai
 
Регистрация: 16.01.2013
Сообщений: 98

Несколько функций на событие 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-м срабатывает только одна
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2014, 15:53
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

addEvent('body','load',startTimer); - убери скобки. ибо ты выполняешь функцию, а надо присвоить
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2014, 16:33
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

можно вот так


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, но я тонкостей не знаю, п-ть не буду.
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2014, 16:38
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

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

startTimer=function(){alert(1)},
startSecund=function(){alert(2)},
window.addEventListener("load", startTimer)
window.addEventListener("load", startSecund)
Ответить с цитированием
  #5 (permalink)  
Старый 18.07.2014, 16:49
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

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


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

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

onload=init


если надо именно body (кстати, зачем?), сделай document.body.onload=...
Ответить с цитированием
  #6 (permalink)  
Старый 18.07.2014, 16:57
Профессор
Посмотреть профиль Найти все сообщения от newobject
 
Регистрация: 10.07.2014
Сообщений: 145

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие на теге input срабатывает несколько раз hrundel Events/DOM/Window 3 15.12.2013 14:49
Событие onload SP7 Общие вопросы Javascript 4 10.11.2013 23:50
Вернуть return через несколько функций TheMilkMan Общие вопросы Javascript 4 25.06.2013 17:22
Несколько функций на одно событие. abstract Events/DOM/Window 13 26.10.2010 10:46
Событие OnLoad у iframe в IE milk3dfx Events/DOM/Window 2 16.02.2009 22:09