Javascript 动态创建的元素上的addEventListener不工作
我想将单击事件添加到内部html中显示的图像中。但当我尝试添加它时,它不会起作用 模板Javascript 动态创建的元素上的addEventListener不工作,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我想将单击事件添加到内部html中显示的图像中。但当我尝试添加它时,它不会起作用 模板 <div [innerHTML]="myHtml"></div> 这是一个问题,这可能是由于在页面循环开始之前仅为元素注册事件侦听器的限制。你有没有试着用渲染器2做得更像角度 this.renderer.listen('img', 'click', (evt) => { console.log('Clicking the document', evt); }); 文档:这
<div [innerHTML]="myHtml"></div>
这是一个问题,这可能是由于在页面循环开始之前仅为元素注册事件侦听器的限制。你有没有试着用渲染器2做得更像角度
this.renderer.listen('img', 'click', (evt) => {
console.log('Clicking the document', evt);
});
文档:这可能是由于在页面循环开始之前,事件侦听器仅为元素注册的限制。你有没有试着用渲染器2做得更像角度
this.renderer.listen('img', 'click', (evt) => {
console.log('Clicking the document', evt);
});
文档:它还不在DOM中。对
ngAfterViewInit
执行相同操作:
ngAfterViewInit() {
const root = document.createElement('div');
root.innerHTML = this.getHtml();
const images = root.getElementsByTagName('img');
Array.prototype.forEach.call(images, (image: HTMLImageElement, i) => {
image.addEventListener('click', (event: any) => {
console.log('click', event);
});
});
this.myHtml = root.innerHTML;
}
它还不在DOM中。对
ngAfterViewInit
执行相同操作:
ngAfterViewInit() {
const root = document.createElement('div');
root.innerHTML = this.getHtml();
const images = root.getElementsByTagName('img');
Array.prototype.forEach.call(images, (image: HTMLImageElement, i) => {
image.addEventListener('click', (event: any) => {
console.log('click', event);
});
});
this.myHtml = root.innerHTML;
}
您需要使用ngAfterViewInit()来实现这一点, 我已经修改了代码,工作正常 请检查链接
希望这有帮助。您需要使用ngAfterViewInit()来实现这一点, 我已经修改了代码,工作正常 请检查链接 希望这有帮助。您可以使用它来指定
元素。然后,您可以使用以下命令将事件侦听器添加到所有
:
请注意:
是一个可以自定义的自定义函数。别忘了从'@angular/core'导入{ElementRef}代码>
更多详细信息,请参见可用于指定
元素的之间的差异。然后,您可以使用以下命令将事件侦听器添加到所有
:
请注意:
是一个可以自定义的自定义函数。别忘了从'@angular/core'导入{ElementRef}代码>
更详细地说,谢谢,这也是工作,但不是'img'目标好发送所需元素的nativeElement谢谢,这也是工作,但不是“img”目标,而是发送所需的nativeElementelement@SuhelKhan如果您想选择并添加EventListener all
,您可以查看我的answer@Suhel如果您想选择并添加EventListener all
,您可以查看我的答案
onclick() {
alert("Image clicked");
}