Javascript, динамическое создание кнопки и событие onclick

Надеюсь, этот спасет мне в следующий раз много времени, которое я потрачу на поиски. Может, окажется полезен еще для кого-то.

Что было. Динамически создавал несколько объектов (textarea и две кнопки). По нажатию на одну из кнопок должно было аджаксом сохраниться то, что я написал, на вторую – восстановиться предыдущее значение. Поэтому при создании кнопок я вешал на них onclick функции типа savetext и restore с определенными параметрами. Делал это так:

cancelbtn.setAttribute( ‘onclick’, ‘javascript:restore(“‘ + id + ‘”, “‘ + field + ‘”, “‘ + field_id + ‘”)’);

И это работало в Firefox, но отказывалось работать в Internet Explorer 7 и ниже.

В случае, если параметров нет никаких, то все делается просто. Но в моем случае надо было динамически создать кнопку и повесить на ее событие onclick выполнение функции с несколькими параметрами. В Javascript я не силен, поэтому немного поискал и нашел на одном из бесчисленных форумов совет от vasa_c. Применимо к моему примеру выглядит это так:

document.getElementById(‘cancel_’ + field_id).attachEvent(“onclick”, (function(e) {restore(id, field, field_id);}));

Упд. (23 июня) Совсем забыл написать одно очень важное замечание. Спустя день, когда начал тестировать код всюду, обнаружилось, что Мозилла в свою очередь не воспринимала тот самый способ, который нравился Ослу. Пришлось проверять браузер (Осел или нет) и в зависимости от этого навешивать событие.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.