HTML
<div id="main"></div>
JS
var TestClass = function() {};
TestClass.prototype = {
addElement: function(parentId) {
var parent = document.querySelector('#' + parentId);
var a = document.createElement('a');
a.textContent = '+';
a.href = '#';
a.addEventListener('click', this.onElementClick, false); //nothing happens on click
parent.innerHTML = a.outerHTML;
},
onElementClick: function() {
console.log('dynamic element clicked');
}
};
new TestClass().addElement('main'); // on DOM ready
输出
<div id="main"><a href="#">+</a></div>
答案 0 :(得分:1)
您正在添加事件侦听器,但是您忘记添加元素。
我已将document.body.append(a)
添加到addElement
方法。
这导致以下代码:
var TestClass = function() {};
TestClass.prototype = {
addElement: function(parentId) {
var parent = document.querySelector('#' + parentId);
var a = document.createElement('a');
a.textContent = '+';
a.href = '#';
a.addEventListener('click', this.onElementClick, false);
document.body.append(a);
parent.innerHTML = a.outerHTML;
},
onElementClick: function() {
console.log('dynamic element clicked');
}
};
new TestClass().addElement('main'); // on DOM ready
答案 1 :(得分:1)
像这样:
var TestClass = function() {};
TestClass.prototype = {
addElement: function(parentId) {
var parent = document.getElementById(parentId); //Changed to getElementById
var a = document.createElement('a');
a.textContent = '+';
a.href = '#';
a.addEventListener('click', this.onElementClick, false);
parent.append(a); //Changed
},
onElementClick: function() {
console.log('dynamic element clicked');
}
};
new TestClass().addElement('main'); // on DOM ready
<div id="main"></div>
您没有将a
添加到parent
,而只是添加了HTML。