为啥我的edittext需要点两次才能触发,Onclick事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我的edittext需要点两次才能触发,Onclick事件相关的知识,希望对你有一定的参考价值。

参考技术A 因为程序需要实际调试,所以在这里给点小建议。
1:这里每次点击都会触发一次get请求,那么就用firebug看有没有发出去请求。
2:设置alert断点,看看你到底有没有触发出这个匿名函数。
3:会不会是请求时间太长导致的

两次尝试后触发Javascript

【中文标题】两次尝试后触发Javascript【英文标题】:Javascript firing after two attempts 【发布时间】:2022-01-08 02:41:07 【问题描述】:

好吧,也许标题措辞有点错误......

我有一些 javascript 应该在单击按钮后打开我的侧边栏 - 但需要两次单击才能打开侧边栏,再单击两次才能关闭..

我通过我的 Javascript 了解为什么会发生这种情况 - 但不确定补救措施(不确定它是否真的是 Blazor 问题?)

Javascript

function LoadContent() 

    document.addEventListener("DOMContentLoaded",
        document.onclick = function(event) 

            const showNavbar = (toggleId, navId, pId, headerId) => 
                const toggle = document.getElementById(toggleId),
                    nav = document.getElementById(navId),
                    bodypd = document.getElementById(pId),
                    headerpd = document.getElementById(headerId);
                    mainbodypd = document.getElementById("mainbody");
                

                if (toggle && nav && bodypd && headerpd && mainbodypd) 
                    toggle.addEventListener("click",
                        () => 
                            nav.classList.toggle("show");
                            toggle.classList.toggle("bx-x");
                            bodypd.classList.toggle("body-pd");
                            headerpd.classList.toggle("body-pd");
                            mainbodypd.classList.toggle("height-100short");

                        );
                
            ;

            showNavbar("header-toggle", "nav-bar", "body-pd", "header");

            const linkColor = document.querySelectorAll(".nav_link");

            function colorLink() 
                if (linkColor) 
                    linkColor.forEach(l => l.classList.remove("active"));
                    this.classList.add("active");
                
            

            linkColor.forEach(l => l.addEventListener("click", colorLink));

        );
   

谁能解释一下,我该如何防止这种情况发生(对不起,我对 JS 还很陌生)

【问题讨论】:

您在点击处理程序内部分配了点击处理程序。因此,只需单击一下即可分配它们。也许你根本不需要外部的“document.onclick”处理程序。 小错字 mainbodypd 未定义 blazor 的全部想法不就是你不使用 javascript 吗? "Blazor 允许您使用 C#而不是 JavaScript 构建交互式 Web UI。" 正如其他人所说:删除 document.onclick = function(event) 这样它就不会在每次单击文档时都在加载时运行 如果我拿走那部分 - 我只是不断收到异常 - 找不到“LoadContent”(“LoadContent”未定义)。 【参考方案1】:

那你为什么要这样做:

document.onclick = function(event) 

这使得函数触发每个页面点击页面上的任何地方(意味着您每次点击时都会继续添加事件侦听器)。

您可能应该删除该部分,或者如果您需要它来做某事,请将显示的avbar 部分从中取出,然后将其放在 DOMContentLoaded 中

【讨论】:

以上是关于为啥我的edittext需要点两次才能触发,Onclick事件的主要内容,如果未能解决你的问题,请参考以下文章

为啥/何时我必须点击两次才能触发 iOS 上的点击

iview的AutoComplete组件点两次才能失焦怎么解决

按钮需要单击两次才能工作 - 为啥?

为啥我需要在提交按钮上单击两次才能提交我的表单?

为啥我的 Stimulus JS 控制器会触发两次?

为啥我的 Xcode 机器人会触发两次?