Добавив onclick событие к динамически добавленной кнопке?
Я добавляю кнопку динамически в 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 помогите мне.
заранее спасибо
Ответы
Ответ 1
попробуйте следующее:
but.onclick = callJavascriptFunction;
или создайте кнопку, обернув ее другим элементом и используйте innerHTML:
var span = document.createElement('span');
span.innerHTML = '<button id="but' + inc +'" onclick="callJavascriptFunction()" />';
Ответ 2
Удалите() из ваших выражений, которые не работают, получите желаемые результаты.
but.setAttribute("onclick",callJavascriptFunction);
but.onclick= callJavascriptFunction;
document.getElementById("but").onclick=callJavascriptFunction;
Ответ 3
Попробуйте
but.addEventListener('click', yourFunction)
Обратите внимание на отсутствие скобок ()
после имени функции. Это связано с тем, что вы назначаете функцию, а не вызываете ее.
Ответ 4
Попробуйте следующее:
var inputTag = document.createElement("div");
inputTag.innerHTML = "<input type = 'button' value = 'oooh' onClick = 'your_function_name()'>";
document.body.appendChild(inputTag);
Это создает кнопку внутри DIV, которая отлично работает!
Ответ 5
У меня была аналогичная проблема, но ни одна из этих исправлений не работала. Проблема заключалась в том, что моя кнопка еще не была на странице. Исправление для этого закончилось тем, что происходит от этого:
//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"); }
Я понятия не имею, почему это работает. Добавление кнопки на страницу и обращение к ней любым другим способом не помогло.
Ответ 6
but.onclick = callJavascriptFunction;
нет двойных кавычек без круглых скобок.
Ответ 7
Этот код работает хорошо для меня и выглядит более простым. Необходимо вызвать функцию с определенным параметром.
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
Ответ 8
but.onclick = function() { yourjavascriptfunction();};
или
but.onclick = function() { functionwithparam(param);};