добавить событие onclick к динамически добавляемой кнопке? - PullRequest
13 голосов
/ 05 августа 2011

Я добавляю кнопку динамически в html, как показано ниже: При нажатии этой кнопки я хочу вызвать функцию Javascript:

var but = document.createElement("button");

but.value="delete row";

but.setAttribute("onclick","callJavascriptFunction()");
//this is not working

but.onclick="callJavascriptFunction()"
//this is also not working

document.getElementById("but").onclick="callJavascriptFunction()"
//this is also not working

but.id="but"+inc;

Есть ли способы решить эту проблему? PLZ, помогите мне.,заранее спасибо

Ответы [ 8 ]

20 голосов
/ 05 августа 2011

попробуйте это:

but.onclick = callJavascriptFunction;

или создайте кнопку, обернув ее другим элементом и используя innerHTML:

var span = document.createElement('span');
span.innerHTML = '<button id="but' + inc +'" onclick="callJavascriptFunction()" />';
11 голосов
/ 05 августа 2011

Удаление () из ваших неработающих выражений даст желаемый результат, который вам нужен.

but.setAttribute("onclick",callJavascriptFunction);
but.onclick= callJavascriptFunction;
document.getElementById("but").onclick=callJavascriptFunction;
4 голосов
/ 05 августа 2011

Попробуйте
but.addEventListener('click', yourFunction) Обратите внимание на отсутствие паратезов () после имени функции.Это потому, что вы назначаете функцию, а не вызываете ее.

3 голосов
/ 26 июня 2017

but.onclick = function() { yourjavascriptfunction();};

или

but.onclick = function() { functionwithparam(param);};

3 голосов
/ 28 августа 2015

Этот код хорошо работает для меня и выглядит проще.Необходимо вызвать функцию с определенным параметром.

var btn = document.createElement("BUTTON");  //<button> element
var t = document.createTextNode("MyButton"); // Create a text node
btn.appendChild(t);   

btn.onclick = function(){myFunction(myparameter)};  
document.getElementById("myView").appendChild(btn);//to show on myView
3 голосов
/ 26 августа 2015

У меня была похожая проблема, но ни одно из этих исправлений не помогло. Проблема была в том, что моей кнопки еще не было на странице. Исправление для этого в конечном итоге идет от этого:

//Bad code.
var btn = document.createElement('button');
btn.onClick = function() {  console.log("hey");  }

к этому:

//Working Code.  I don't like it, but it works. 
var btn = document.createElement('button');
var wrapper = document.createElement('div');
wrapper.appendChild(btn);

document.body.appendChild(wrapper);
var buttons = wrapper.getElementsByTagName("BUTTON");
buttons[0].onclick = function(){  console.log("hey");  }

Понятия не имею, почему это работает. Добавление кнопки на страницу и любое другое обращение к ней не помогло.

2 голосов
/ 03 декабря 2012

Попробуйте:

var inputTag = document.createElement("div");              
inputTag.innerHTML = "<input type = 'button' value = 'oooh' onClick = 'your_function_name()'>";    
document.body.appendChild(inputTag);

Это создаст кнопку внутри DIV, которая отлично работает!

1 голос
/ 05 августа 2011
but.onclick = callJavascriptFunction;

без двойных кавычек без скобок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...