如何解决“addEventListener”“click”在javascript中不起作用的问题,

how to resolve issue "addEventListener" "click" not working in javascript,

提问人:Marty 提问时间:9/15/2022 最后编辑:Marty 更新时间:9/20/2022 访问量:78

问:

我正在尝试添加“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);
        });

我正在努力尝试找到解决这个问题的方法。我需要找出无序列表的哪一行是按项目单击的,而不是通过窗口单击的。

javascript angularjs dom

评论

2赞 Chris G 9/15/2022
你的代码中到底有什么不起作用?你得到什么错误?未显示警报?还是控制台.log(没有给你任何响应?
0赞 Marty 9/15/2022
该函数不会调用,我没有看到控制台.log(“点击...”);alert('点击...');使用我上面的代码,即使单击后控制台也是空白的......在表情符号上
0赞 cotneit 9/15/2022
在您链接的示例中,一切正常。您是否尝试将其作为简单的 HTML 页面或作为 AngularJS 应用程序的一部分运行?它是更大应用程序的片段吗?
2赞 The Head Rush 9/16/2022
将 绑定到每个 .事件 from 在角度区域之外运行,应用程序看不到。欢迎进入 AngularJs 的高度固执己见的世界。emojuClickFnng-clickliaddEventListener
2赞 Ruan Mendes 9/16/2022
@Marty 我们告诉你,你正在掉进一个兔子洞。使用 AngularJS 方式重新实现您的代码,然后您可以提出一个问题,如果它不起作用。我们不会在 Angular 应用程序中编写这种代码,除非我们非常了解它是如何工作的以及为什么必须这样做。构建 DOM 并为您设置/取消处理程序是 Angular 的核心。

答:

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 的情况下。这听起来很奇怪,你正在使用一种你不知道的技术,但你试图做一些违背它工作方式的事情。如果你必须这样做,你应该解释为什么你要违背原则。