Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Несколько функций на одно событие. (https://javascript.ru/forum/events/12552-neskolko-funkcijj-na-odno-sobytie.html)

abstract 22.10.2010 16:55

Несколько функций на одно событие.
 
Собственно вопрос я так понимаю совсем смешной, однако люди добрые подскажите пожалуйста как повесить на событие onLoad вызов сразу нескольких функций?
Сейчас так:
onLoad="loadTable('table_2')"

а нужно ещё loadTable('table_1');

Kolyaj 22.10.2010 17:22

http://javascript.ru/tutorial/events...deventlistener

abstract 22.10.2010 17:47

А попроще решения нет? Ну что-то типа вызов из тела функции init?
function init(){
loadTable('table_1');
loadTable('table_2');
}

Просто в этой части на странице никакой динамики не предвидится.

Kolyaj 22.10.2010 18:06

Что сложного в вызове функции addEventListener/attachEvent?

vladlen 24.10.2010 02:10

Проще и доступнее чем там написано нет! Криворучее, не желание что-то изучать - фреймворки.

abstract 25.10.2010 09:35

Объясните пожалуйста почему это не работает:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" charset="UTF-8" src="rubber_table_dom.js"></script>
<script type="text/javascript" charset="UTF-8" src="ajax.js"></script>
<script type="text/javascript" charset="UTF-8" src="onLoad.js"></script>
<title>Отработка резиновой таблицы</title>
</head>
<body onLoad="init()">

<center>
<span id='firm'>
<b>Эту запись должна заменить таблица. Значит какой-то косячок!!</b>
</span>
<br>
11111111111111111;
<br>
<span id='table_2'>
<b>Эту запись должна заменить таблица. Значит какой-то косячок!!</b>
</span>
</center>

</body>
</html>

function addEvent(elem, type, handler){
	  if (elem.addEventListener){
	    elem.addEventListener(type, handler, false)
	  } else {
	    elem.attachEvent("on"+type, handler);
	  }
	} 
function init(){
	addEvent('body','load',loadTable('firm'));
	addEvent('body','load',loadTable('table_2'));
	};

Значит первый момент: "Break on ErrorКопировать
elem.attachEvent is not a function" - firefox.
Второй момент: Первая таблица отображается, вторая уже нет.

Kolyaj 25.10.2010 09:44

А почему body в кавычках?

abstract 25.10.2010 16:31

а без кавычек не работает

Kolyaj 25.10.2010 16:57

А с кавычками работает? :)

document.body

abstract 25.10.2010 17:11

Да, первая таблица грузится. Ровно также ведет себя такая запись:
function addEvent(elem, type, handler){
	  if (elem.addEventListener){
	    elem.addEventListener(type, handler, false)
	  } else {
	    elem.attachEvent("on"+type, handler);
	  }
	} 
function init(){
	addEvent(document.body,'load',loadTable('table_2'));
	addEvent(document.body,'load',loadTable('firm'));
	
	};

Kolyaj 25.10.2010 17:16

Потому что вы её сразу загружаете, а не по событию load. У вас бы и вторая грузилась, если бы ошибки не возникало, но только сразу, а ни на событии load.

abstract 26.10.2010 10:37

Да как же это не по событию Load?...Может конечно я как-то неправильно понимаю... но наверное Вы правы, где-то я напортачил.. иначе проще сделать так...
onLoad=init()...
init()
{
loadTable('firm');
loadTable('table_2');

}

Пока так и попробую...но тогда не понятно для каких случаев addEventListener и, что самое интересное, как правильно его применять.

Kolyaj 26.10.2010 10:41

Цитата:

Сообщение от abstract
иначе проще сделать так...
onLoad=init()...

Так у вас тоже сразу будет, а не по событию. Вы скобки зачем к имени функции добавляете? Она ж сразу вызывается.

abstract 26.10.2010 10:46

<body onLoad="init">
А так вот что:
uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://192.168.1.203:8080/RTRS/onLoad.js :: addEvent :: line 3" data: no]


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