I am trying to dynamically create buttons which are displayed in the 5th (last) column of a table, which is also created dynamically. Everything is created properly. However, upon clicking the buttons, the function is not triggered. Perhaps it is because I am using vue.js to develop my front-end. I have tried using “v-on:click” instead of “click” in the button.setAttribute('click', 'claim()')
code below, but this did not help.
JavaScript
x
23
23
1
var table = document.createElement('table')
2
for (var i = 1; i <= 5; i++) {
3
var th = document.createElement('th')
4
th.appendChild(header)
5
table.appendChild(th)
6
for (var j = 1; j <= 4; j++) {
7
var tr = document.createElement('tr')
8
for (var k = 1; k <= 5; k++) {
9
var td = document.createElement('td')
10
var node = document.createTextNode(k)
11
td.appendChild(node)
12
tr.appendChild(td)
13
if (k === 5) {
14
var button = document.createElement('input')
15
button.setAttribute('type', 'submit')
16
button.setAttribute('value', 'Purchase')
17
button.setAttribute('click', 'purchase()')
18
td.appendChild(button)
19
}
20
}
21
table.appendChild(tr)
22
}
23
Advertisement
Answer
You need to use addEventListener
for adding any event. Example : button.addEventListener('click', purchase)
JavaScript
1
29
29
1
var app = document.getElementById("app");
2
var table = document.createElement('table');
3
app.appendChild(table)
4
for (var i = 1; i <= 5; i++) {
5
var th = document.createElement('th')
6
//th.appendChild(header)
7
table.appendChild(th)
8
for (var j = 1; j <= 4; j++) {
9
var tr = document.createElement('tr')
10
for (var k = 1; k <= 5; k++) {
11
var td = document.createElement('td')
12
var node = document.createTextNode(k)
13
td.appendChild(node)
14
tr.appendChild(td)
15
if (k === 5) {
16
var button = document.createElement('input')
17
button.setAttribute('type', 'submit')
18
button.setAttribute('value', 'Purchase')
19
button.addEventListener('click', purchase)
20
td.appendChild(button)
21
}
22
}
23
table.appendChild(tr)
24
}
25
}
26
27
function purchase() {
28
console.log("done")
29
}
JavaScript
1
5
1
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
2
3
<div id='app'>
4
5
</div>