theretalk.ru

    Главная      
Программирование
Самоучители:

Динамическое назначение обработчика события

  Кроме всего прочего, имеется возможность динамического назначения обработчиков событий для элементов ддокумента. Например, кнопка может быть создана с помощью тега, в котором атрибут обработчика события onClick не задан. Однако значение этого атрибута можно определить в дальнейшем, тоесть динамически задать для этой кнопки функцию-обработчик Click. Кроме того, в процессе работы программы определенные ранее обработчики событий могут быть сброшены или переопределены.
    Рассмотрим документ, содержащий кнопку, для которой при выборе гиперсвязей задается тот или иной обработчик событий. В данном случае для кнопки переопределяется обработчик события Click, который активизирует JavaScript-функцию для загрузки нового документа. Имя загружаемого документа указывают путем присваивания свойству location текущего окна имени соответствующего файла. Кнопка создается без обработчика события, поэтому перед ее активизацией следует выбрать соответствующий файл щелчком мыши на одной из гиперсвязей.

Задать загрузку файла 1 при нажатии кнопки
Задать загрузку файла 2 при нажатии кнопки
Задать загрузку файла 3 при нажатии кнопки

<script language="JavaScript">
<!--
function button1() {
location = "1.htm";
}
function button2() {
location = "2.htm";
}
function button3() {
location = "3.htm";
}
//-->
</script>

<form>
<input name="but1" type="button" value="Загрузить файл">
</form><p>
<a href="#" onClick="document.forms[0].but1.onClick=button1()">
Задать загрузку файла 1 при нажатии кнопки </a><BR>
<a href="#" onClick="document.forms[0].but1.onClick=button2()">
Задать загрузку файла 2 при нажатии кнопки </a><BR>
<a href="#" onClick="document.forms[0].but1.onClick=button3()">
Задать загрузку файла 3 при нажатии кнопки </a>
    В этом примере я специально написал неработающие функции, чтобы не делать HTML файлы и вы никуда не ушли с этой страницы при нажатии кнопки. Для того, чтобы все работало нужно просто заменить например location = "1.htm"; на window.location.href = "1.htm"; и так со всеми функциями.

    С помощью приема, показанного в примере, можно динамически задавать обработчики событий для других HTML-объектов при условии, что соответствующие атрибуты обработчиков событий для этих объектов могут быть определены. Если это условие нарушено, обработчик событий будет игнорироваться. Например, если в предыдущем примере записать: document.forms[0].but1.onloaad=button3, то функция-обработчик событий button3 все равно не будет вызываться при создании кнопки, поскольку Load для объектов button не возникает.

Интернет и сети
Самоучители:
Статьи:

theretalk.ru 2007-2008 г.

Rambler's Top100


на www.altavista.ru