Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Динамическое создание элементов. Не работает onclick (https://javascript.ru/forum/dom-window/49107-dinamicheskoe-sozdanie-ehlementov-ne-rabotaet-onclick.html)

Master_Sergius 29.07.2014 17:35

Динамическое создание элементов. Не работает onclick
 
Здравствуйте! Пытаюсь сделать маленький тест, каждый новый вопрос появляется после ответа на предыдущий.
Создаю кнопку перехода к следующему вопросу.
var next = document.createElement("input");
  next.setAttribute('type','button');
  next.setAttribute('value','next');
  next.setAttribute('onclick',question2);
  //next.attachEvent('onclick',question2);
  document.body.appendChild(next);

где question2 - функция, в которую хотелось бы передать ещё параметр - ответ на предыдущий вопрос. Но это потом. Для начала у меня не срабатывает она никак:
function question2()
{
  document.write('it works!');
  alert("wtf");
}

Если расскоментирую attachEvent, а через аттрибут закоментирую, то кнопка вообще не появляется. Подскажите в чём проблема, или хотя бы где посмотреть/почитать.

Erolast 29.07.2014 18:03

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

И можно писать просто next.type = "button", next.value = "next"

Master_Sergius 29.07.2014 21:27

Цитата:

Сообщение от Erolast (Сообщение 323295)
http://javascript.ru/tutorial/events/intro

И можно писать просто next.type = "button", next.value = "next"

Большое спасибо! Теперь вроде всё понятно. Но, как присваивать аттрибуты лучше по стилю? По-моему, через точку доступаться к полям лучше только при работе со своими объектами, не?

Sklifosofsky 29.07.2014 21:55

Здесь конструкция с кавычками setAttribute аналогична
next.setAttribute('onclick','question2()');

Vlasenko Fedor 30.07.2014 00:49

Цитата:

Сообщение от Sklifosofsky (Сообщение 323320)
Здесь конструкция с кавычками setAttribute аналогична
next.setAttribute('onclick','question2()');

Может все таки так уже писать
next.onclick = question2;
function question2(){
	alert('Ya');
}

еще статья на заметку
http://javascript.ru/unsorted/top-10...ns#10-addevent

Erolast 30.07.2014 07:20

Цитата:

Но, как присваивать аттрибуты лучше по стилю? По-моему, через точку доступаться к полям лучше только при работе со своими объектами, не?
Важно понимать разницу между свойствами и аттрибутами - http://javascript.ru/tutorial/dom/attributes.
Обычно изменяют через свойства.

Master_Sergius 30.07.2014 09:48

И всё-таки, что-то никак не получается сделать рабочим онклик!!!
прошу взглянуть весь код (там пока бардак, но даже с алертом не пашет):
function start()
{
  document.write('Choose importance of decision<br />');
  // Create a select element dynamically
  var select = document.createElement("select");
  for (var i=1; i<=10; i++)
  {
    var option = document.createElement("option");
    option.text = i;
    option.value = i;
    try
    {
      select.add(option, null); //Standard
    } catch(error)
    {
      select.add(option); // IE only
    }
  }
  document.body.appendChild(select);
  // End of creating select
  var next = document.createElement("input");
  next.setAttribute('type','button');
  next.setAttribute('value','next');
  //next.addEventListener = ("click", function() { alert('whats up, nigga?') }, false)
  next.onclick = function() { alert('whats up, nigga?'); };
  //next.onclick = function() { question2('whats up, nigga?') }
  //next.setAttribute('onclick',question2);
  //next.attachEvent('onclick',question2);
  document.body.appendChild(next);
}

function question2(msg)
{
  document.write('it works!');
  alert(msg);
}


Почему не хочет кликаться? (там закомментированы все попытки)

Erolast 30.07.2014 09:53

Как так? Код рабочий.
Загляни в консоль ошибок, должно проясниться. Обычно она открывается по Ctrl+Shift+I.

Master_Sergius 30.07.2014 11:07

Ничего не показывает. У вас код работает?

Erolast 30.07.2014 11:14

http://learn.javascript.ru/play/Ul7x4b


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