不能给用EventListener 添加的按钮添加EventListener
It is not possible to addEventListener to the button added with the EventListener
我有两个函数可以通过单击一个按钮来重绘部分页面,每个函数在呈现后都应该向绘制的按钮添加一个事件监听器。
showItem () {
const Id = this.dataset.product_id;
const ItemBlock = document.getElementById(Id)
const Template = renderItemNormalView();
const HTML = Template(ItemBlock.dataset);
ItemBlock.innerHTML = HTML;
const editBtn = ItemBlock.querySelector('.js-edit-item');
editBtn.addEventListener('click', this.showItemEditor);
}
showItemEditor () {
const id = this.dataset.product_id;
const itemBlock = document.getElementById(id);
const template = renderItemEditView();
const HTML = template(itemBlock.dataset);
itemBlock.innerHTML = HTML;
const saveChanges = itemBlock.querySelector('.js-save-item-changes');
saveChanges.addEventListener('click', this.showItem);
}
第一次点击调用showItemEditor函数,渲染页面后showItem没有添加为onclick。我是 js 新手,所以我不明白问题可能是什么。
好吧,这很棘手,至少对我来说是这样。问题是,我的两个函数的 'this' 不是包含它们的 class,而是我试图放置 onclick 的按钮,所以表达式 'this.showItem' 和 'this.showItemEditor' 完全没有意义。我很惊讶 firefox 没有告诉我这件事。但我很高兴一切都结束了:)
我有两个函数可以通过单击一个按钮来重绘部分页面,每个函数在呈现后都应该向绘制的按钮添加一个事件监听器。
showItem () {
const Id = this.dataset.product_id;
const ItemBlock = document.getElementById(Id)
const Template = renderItemNormalView();
const HTML = Template(ItemBlock.dataset);
ItemBlock.innerHTML = HTML;
const editBtn = ItemBlock.querySelector('.js-edit-item');
editBtn.addEventListener('click', this.showItemEditor);
}
showItemEditor () {
const id = this.dataset.product_id;
const itemBlock = document.getElementById(id);
const template = renderItemEditView();
const HTML = template(itemBlock.dataset);
itemBlock.innerHTML = HTML;
const saveChanges = itemBlock.querySelector('.js-save-item-changes');
saveChanges.addEventListener('click', this.showItem);
}
第一次点击调用showItemEditor函数,渲染页面后showItem没有添加为onclick。我是 js 新手,所以我不明白问题可能是什么。
好吧,这很棘手,至少对我来说是这样。问题是,我的两个函数的 'this' 不是包含它们的 class,而是我试图放置 onclick 的按钮,所以表达式 'this.showItem' 和 'this.showItemEditor' 完全没有意义。我很惊讶 firefox 没有告诉我这件事。但我很高兴一切都结束了:)