提问人:Marty 提问时间:9/15/2022 最后编辑:Marty 更新时间:9/20/2022 访问量:78
如何解决“addEventListener”“click”在javascript中不起作用的问题,
how to resolve issue "addEventListener" "click" not working in javascript,
问:
我正在尝试添加“addEventListener”,我正在测试其中一个示例,但它不起作用。谁能告诉我我做错了什么或遗漏了什么?
<body>
<div class="emoji-row ng-scope" ng-repeat="...">
<div class="emoji-wrapper">
<div class="emoji-reactions">
<div class="emoji-reactions-main">
:)
</div>
<div class="emoji-reactions-panel">
<ul>
<li> :) </li>
<li> :( </li>
</ul>
</div>
</div>
</div>
<span class="helloemoji"></span>
</div>
<script>
const tag = document.createElement("span");
tag.className = 'helloemoji';
document.getElementsByClassName("emoji-row")[0].appendChild(tag);
const emojis = document.getElementsByClassName("emoji-reactions-panel")[0].getElementsByTagName("li");
console.log(emojis.length); /* 5 */
Array.from(emojis).forEach(function (item) {
console.log("item", item);
item.addEventListener('click', emojiClickfunc);
});
function emojiClickfunc() {
console.log("clicked...")
alert('clicked...');
}
</script>
<!-- style -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
我创建了一个示例示例,但奇怪的是它在那里工作!但不是我上面的代码:(
希望能为我如何解决这个问题提供一些指导。
编辑:
在进行随机更改时,添加对窗口的单击
Array.from(emojis).forEach(function (item) {
console.log("item", item);
window.addEventListener('click', emojiClickfunc);
});
我正在努力尝试找到解决这个问题的方法。我需要找出无序列表的哪一行是按项目单击的,而不是通过窗口单击的。
答:
0赞
cotneit
9/16/2022
#1
我没有使用 AngularJS 的经验,但如果您正在使用它并且问题似乎是特定于它的,也许您可以尝试以 AngularJS 的方式做事?
就像 ng-click 指令 https://docs.angularjs.org/api/ng/directive/ngClick 一样
评论
0赞
Marty
9/16/2022
您好,我正在使用 ng-click 指令。尝试通过 js 存档
1赞
Ruan Mendes
9/16/2022
@Marty为什么?您不应该手动设置处理程序和创建 DOM 节点,尤其是在您不了解 AngularJS 的情况下。这听起来很奇怪,你正在使用一种你不知道的技术,但你试图做一些违背它工作方式的事情。如果你必须这样做,你应该解释为什么你要违背原则。
评论
emojuClickFn
ng-click
li
addEventListener