Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как создать атрибут-событие


Автор: GIK 6.11.2005, 12:04
Всем привет.
Не могу создать событие (атрибут onClick)
Код

    f = document.createElement("form");
    document.body.appendChild(f);
    b = document.createElement("input");
    b.setAttribute("type", "button"); 
    b.setAttribute("value", "Вычислить"); 
    b.setAttribute("onClick", "f2()");
    f.appendChild(b);

По разному перепробовал, неполучается.
Код

funct = "f2()"; 
b.setAttribute("onClick", funct);

Автор: Aliance 6.11.2005, 13:12
Код

b.onclick = f2;

Автор: Sardar 6.11.2005, 13:13
Всё правильно, ты установил кнопке текстовый аттрибут onclick, можешь его назад опросить и убедиться что он есть и это текст.

Поверх интерфейсов элементов DOM документа стоят интерфейсы HTML DOM 1, в которых расписанны особые свойства элементов в среде JS. А именно специфичные для каждого элемента свойства и коллекции.

Далее смотрим в DOM 2 Events, видим интерфейсы EventTarget, EventListener в JS излишен. В EventTarget определён addEventListener, замечательная вещь, но ИЕ не поддерживает и даже в 7 версии не собираеться, похоже ведут эту политику специально. Благо с каждым годом по паре процентов юзеров от него отказываються.

Тогда вспоминаем былые интерфейсы(а знает ли кто нибудь что style не существовал, что стили похожие на CSS вперемешку с аттрибутами HTML сразу в элементе лежали? smile ), вспоминаем "традиционную модель событий". Каждый элемент имеет несколько полей onxxx, при возникновении события исполняющая среда смотрит на поле, если функция, то запускает её. Из-за отстойности ИЕ эта модель до сих пор наиболее используемая.

Об attachEvent не говорю, вещь кривая, те кто привык использовать this в обработчике событий будут "приятно" удивлены безмозглостью разработчиков, element в обработчике как в bechaviors существовать не будет... и чем они думали...

Надеюсь подробно и ясно пояснил ситуацию smile

Автор: GIK 6.11.2005, 13:23
Цитата
b.onclick = f2;

НИхочит smile
Код

 <html>
 <head>
  <script type="text/javascript">
  <!--
    function f1()
  { var a = "GIK";
    f = document.createElement("form"); //создаем форму
    f.setAttribute("name", "form1"); //Создаем атрибуты формы
    document.body.appendChild(f); //Вставляем форму
    inp = document.createElement("input"); //создаем эллеметн INPUT
    inp.setAttribute("type", "text");  //Создаем нужные атрибуты эллемента
    inp.setAttribute("value", a); 
    inp.setAttribute("name", "input1");
    inp.setAttribute("onClick", "f2()"); //Так тоже нихочит
    f.appendChild(inp); //вставляем готовый эллемент с атрибутами
    //Создаем BUTTON  
    b = document.createElement("input");
    b.setAttribute("type", "button"); 
    b.setAttribute("value", "Вычислить"); 
    b.onclick = f2; //Так НИхочит и скорей всего хотить НИбудит?
    f.appendChild(b);
  } 
   function f2()
 { document.form1.input1.value="Функция f2 работает"; 
  }
   //-->
  </script>
 </head>
<body onLoad="f1()">

</body>
</html>

Добавлено @ 13:25
Цитата
Надеюсь подробно и ясно пояснил ситуацию

Вопросов болше не имею

Автор: Luceus 1.5.2007, 09:38
Я использовал следующий код (опробовал в фаерфоксе и интернет эксплорере - пашет):

<element>.onclick = function () { alert ("it's working"); }

Надеюсь, поможет =)

Автор: GIK 1.5.2007, 14:24
Нифига, тему от 2005 года подняли smile 

Luceus, спасибо, посмотрю smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)