dom-events 相关问题

DOM(文档对象模型)事件允许事件驱动的编程语言在DOM树内的元素节点上注册各种事件处理程序/侦听器。

HTML slider sticks to the cursor inside CodeMirror 6 decoration

看起来,CodeMirror 6 的元素阻止了 mouseup 事件的本机事件。 一旦我点击一个滑块,它就永远不会离开它。我无法与任何事物互动 这个滑块只是一个

回答 1 投票 0

调用定义的方法时出现 JavaScript “不是函数”错误

这是我的代码: request_xml:函数() { http_request = false; http_request = new XMLHttpRequest(); 如果 (http_request.overrideMimeType) ...

回答 3 投票 0

添加第二个提交处理程序

我正在尝试修改一个现有的网页,如下所示: s1.js 有这样的东西: window.onDomRe...

回答 1 投票 0

你能帮我解决问题吗? [关闭]

我正在努力让这段代码工作,但我终究无法理解为什么它不会。我已经尝试过 JSlint 和一切。我用 JavaScript 的时间还不到 2 小时,所以我觉得这是个愚蠢的问题……

回答 1 投票 0

使用 JavaScript 在非活动选项卡中播放音频

我使用 Websocket 写了一个网络聊天。 问题是用户切换浏览器的选项卡,我想播放声音让他们知道有人想在聊天选项卡中与他交谈。 我看到 FaceBook 和 GMail 可以...

回答 1 投票 0

更改父类 onfocus

我有一个字段,我想在其中选择一个输入框来更改字段的背景颜色。我的尝试是更改输入父级的 html 类,即字段,

回答 2 投票 0

添加幻灯片图像链接,由滚轮控制

我很难尝试为我的幻灯片中的每张图片添加不同的链接。 我是 JavaScript/jQuery 的新手,所以如果有一种更简单、更有效的方法来实现这一点

回答 0 投票 0

为什么 addEventListener 在添加到 DOM 之前处理动态创建的元素,而不处理它在 JavaScript 中的子元素?

我正在尝试动态创建手风琴信息部分,一次打开一个项目,单击另一个项目将关闭已经打开的项目以打开新项目。 每个项目包括...

回答 2 投票 0

谁能告诉我如何在 vanilla js 中编写相同的代码?

任何人都可以将此 jQuery 代码更改为 Vanilla JS。 包装纸和卡片上的鼠标悬停我正在展示卡片。并且 onmouseleave 它再次去显示无。 任何人都可以将此 jQuery 代码更改为 Vanilla JS. 鼠标悬停在包装纸和卡片上我正在展示卡片。并且 onmouseleave 它再次显示无。 <div class="wrapper" onmouseover="show(this);" onmouseleave="hide(this);"> <div class="box"></div> <div class="card" onmouseover="show(this);" onmouseleave="hide(this);"> <img src="img-2"> </div> </div> <div class="wrapper" onmouseover="show(this);" onmouseleave="hide(this);"> <div class="box"></div> <div class="card" onmouseover="show(this);" onmouseleave="hide(this);"> <img src="img-1"> </div> </div> function show(e) { $(e).find('.card').css('display','block'); } function hide(e) { $(e).find('.card').css('display','none'); } 以下应该可以解决问题 function hide(el){ el.querySelector(".card").style.display = "none"; } function show(el){ el.querySelector(".card").style.display = "block"; } 你也可以用纯 CSS 做到这一点: .card{ width: 100px; height: 100px; display: none; background-color: red; } .container{ background-color: lightgrey; border: 2px solid black; } .container:hover > .card{ display: block; } <div class="container"> <h2> Title </h2> <div class="card"> </div> </div> 您必须对代码进行以下更改: function show(element) { const cardElement = element.getElementsByClassName("card")[0]; if (cardElement) { cardElement.style.display = 'block'; } } function hide(element) { const cardElement = element.getElementsByClassName("card")[0]; if (cardElement) { cardElement.style.display = 'none'; } } .container { display: flex; flex-direction: row; gap: 10px; } .wrapper { width: 60px; height: 60px; background-color: #f00; display: block; } .card { display: none; } <div class="container"> <div class="wrapper" onmouseover="show(this);" onmouseleave="hide(this);"> <div class="box"></div> <div class="card"> <img src="https://api.dicebear.com/5.x/pixel-art-neutral/svg?seed=img-2"> </div> </div> <div class="wrapper" onmouseover="show(this);" onmouseleave="hide(this);"> <div class="box"></div> <div class="card"> <img src="https://api.dicebear.com/5.x/pixel-art-neutral/svg?seed=img-1"> </div> </div> </div> 您也可以仅使用 CSS 实现相同的效果: .container { display: flex; flex-direction: row; gap: 10px; } .wrapper { width: 60px; height: 60px; background-color: #f00; display: block; } /* This definition works to replace `onmouseleave` */ .card { display: none; } /* This definition works to replace `onmouseover` */ .wrapper:hover > .card { display: block; } <div class="container"> <div class="wrapper"> <div class="box"></div> <div class="card"> <img src="https://api.dicebear.com/5.x/pixel-art-neutral/svg?seed=img-2"> </div> </div> <div class="wrapper"> <div class="box"></div> <div class="card"> <img src="https://api.dicebear.com/5.x/pixel-art-neutral/svg?seed=img-1"> </div> </div> </div> JQuery 的 find 是一个子选择器(因此您正在寻找您要选择的实际元素的子元素) 所以取决于你想要触发功能的元素, // on clicked element function show(el) { el.style.display = "block"; } // on all siblings function show(el) { let elem=el.nextElementSibling; while(elem){ $(elem).css('display', 'block'); elem=elem.nextElementSibling; } let elem=el.previousElementSibling; while(elem){ $(elem).css('display', 'block'); elem=elem.previousElementSibling; } } // on siblings with class .card and itself function show(el) { $(el.parentElement).find('.card').css('display', 'block'); } // of children with class .card function show(el) { $(el.parentElement).find('.card').css('display', 'block'); } // You can also filter with standard operators. eg: el !== $(el.parentElement).find('.card')[0] 但归根结底,只需使用 CSS 选择器:例如: .card:hover { display: none; } .wrapper:hover .card { display: block; } .wrapper:not(:hover) .card { display: none; } // and so on... 此外,我不是 100% 确定 display: none 和 onMouse 效果兼容,你应该尝试使用 opacity: 0 或类似的东西

回答 3 投票 0

动态改变滚动背景颜色

有没有办法在滚动时动态改变背景颜色? 例如,参考这个网站(https://www.samsung.com/sec/smartphones/galaxy-note9/) 当您第一次访问该站点时,背景 ...

回答 5 投票 0

为什么 React 的 onContextMenu 在 Chrome 中的禁用元素上工作?

我发现了一件很奇怪的事情。在所有主流浏览器中,上下文菜单事件对禁用的元素不起作用,因此这不会打印到控制台: 我发现了一件很奇怪的事情。在所有主流浏览器中,上下文菜单事件对禁用的元素不起作用,因此这不会打印到控制台: <button type="button" onContextMenu="console.log(123)" disabled > Click me </button> 但它与 React 有点不同。我试图通过 React 组件做同样的事情: const MyComponent = () => ( <button type="button" onContextMenu={() => console.log(123)} disabled > Click me </button> ); 这一次,在 Chrome 中它会打印到控制台,但在其他浏览器中它不会。出于教育目的,我试图了解 HTML 的onContextMenu 和 React 的onContextMenu 之间的区别以及为什么只有 Chrome 以不同的方式处理它。超级奇怪。 转载于Codesandbox 我花了一段时间来研究这个。这似乎是 Chrome 中的一个错误,尽管 contextmenu 是 PointerEvent 的一种,但它会在禁用元素上触发 但只有 冒泡时. 这是一个没有 React 的 JSFiddle:https://jsfiddle.net/bpe0yoc6/4/ // Only in chrome does this fire document.querySelector("#root").addEventListener("contextmenu", (e) => { console.log("contextmenu fired", e.target.tagName) }) document.querySelector("#root").addEventListener("click", (e) => { console.log("click fired", e.target.tagName) }) #root { width: 200px; height: 200px; display: block; background-color: #ccc; } <div id="root"> <button type="button" disabled > Click me </button> </div> React 在 DOM 树的根部注册事件句柄,这就是这样做的原因: document.querySelector("button").addEventListener("contextmenu", (e) => { ... }) 不会触发禁用按钮,也不会oncontextmenu. 我在 Chromium 问题跟踪器上开了一个问题:https://bugs.chromium.org/p/chromium/issues/detail?id=1421370

回答 1 投票 0

Auto suggest PHP ajax with two input boxes not working with the given sample code

我有一个代码来获取搜索建议,下面是代码: </...</desc> <question vote="0"> <p>我有一个代码来获得搜索建议,下面是代码:</p> <pre><code>&lt;script type=&#34;text/javascript&#34; src=&#34;http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js&#34;&gt;&lt;/script&gt; &lt;script&gt; function suggest(inputString){ if(inputString.length == 0) { $(&#39;#suggestions&#39;).fadeOut(); } else { $(&#39;#country&#39;).addClass(&#39;load&#39;); $.post(&#34;autosuggest.php&#34;, {queryString: &#34;&#34;+inputString+&#34;&#34;}, function(data){ if(data.length &gt;0) { $(&#39;#suggestions&#39;).fadeIn(); $(&#39;#suggestionsList&#39;).html(data); $(&#39;#country&#39;).removeClass(&#39;load&#39;); } }); } } function fill(thisValue) { $(&#39;#country&#39;).val(thisValue); setTimeout(&#34;$(&#39;#suggestions&#39;).fadeOut();&#34;, 600); } &lt;/script&gt; &lt;form id=&#34;form&#34; action=&#34;#&#34;&gt; &lt;div id=&#34;suggest&#34;&gt;To: &lt;br /&gt; &lt;input type=&#34;text&#34; size=&#34;40&#34; value=&#34;&#34; id=&#34;country&#34; onkeyup=&#34;suggest(this.value);&#34; onblur=&#34;fill();&#34; class=&#34;&#34; /&gt; &lt;div class=&#34;suggestionsBox&#34; id=&#34;suggestions&#34; style=&#34;display: none;&#34;&gt; &lt;img src=&#34;arrow.png&#34; style=&#34;position: relative; top: -12px; left: 30px;&#34; alt=&#34;upArrow&#34; /&gt; &lt;div class=&#34;suggestionList&#34; id=&#34;suggestionsList&#34;&gt; &amp;nbsp; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/form&gt;&lt;/td&gt;&lt;td&gt; &lt;form id=&#34;torm&#34; action=&#34;#&#34;&gt; &lt;div id=&#34;suggest&#34;&gt;From: &lt;br /&gt; &lt;input type=&#34;text&#34; size=&#34;40&#34; value=&#34;&#34; id=&#34;country&#34; onkeyup=&#34;suggest(this.value);&#34; onblur=&#34;fill();&#34; class=&#34;&#34; /&gt; &lt;div class=&#34;suggestionsBox&#34; id=&#34;suggestions&#34; style=&#34;display: none;&#34;&gt; &lt;img src=&#34;arrow.png&#34; style=&#34;position: relative; top: -12px; left: 30px;&#34; alt=&#34;upArrow&#34; /&gt; &lt;div class=&#34;suggestionList&#34; id=&#34;suggestionsList&#34;&gt; &amp;nbsp; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/form&gt; </code></pre> <p>只给出了一个表格并且代码运行良好,但是当我添加另一个表格并在那里输入一个键时,它仍然会获取第一个表格的建议。请帮助我。</p> </question> <answer tick="false" vote="0"> <p>这可能是 2 个建议框具有相同 id 的问题.. 为 2 个表单提供单独的 id 并将其传递给 suggest() 函数</p> </answer> <answer tick="false" vote="0"> <p>因为您的 ID 对于“国家/地区”、“建议”和“建议列表”是相同的,如果结果转到这些 ID,它将获得找到的第一个 ID,您的 ID 应该是唯一的。 </p> </answer> </body></html>

回答 0 投票 0

点击事件不会触发移动目标

我正在编写一个带有移动球的 JavaScript 游戏。 当用户设法点击移动的球时,我想要一条警告消息。 它现在正在工作,但事件并非每次都触发。看起来

回答 1 投票 0

将自定义数据传递给模拟的 JavaScript 事件

我希望能够将自定义数据传递给模拟的 JavaScript 事件,以便我可以在事件侦听器回调中唯一标识此模拟事件。例如,如果我要调用: 变量事件 =

回答 1 投票 0

类型“EventTarget”上不存在属性“数据集”

单击后尝试访问按钮上的数据集时,出现此^错误。 linkProvider = (ev: React.SyntheticEvent) => { console.debug('ev.target', ev.target.dataset[...

回答 3 投票 0

事件监听器的重新声明

我有一个恼人的问题,除非我重新声明一个事件框架,否则潜伏了一段时间的潜在错误就会浮出水面。这个错误是我要解决的问题,但我需要一个答案......

回答 1 投票 0

如何找到窃取 DOM 焦点的函数?

我正在尝试调试我的应用程序与 Stripe 的 Elements 组件库之间的集成。在沙盒模式下一切正常,但我们在 3D Secure 正版中遇到了生产问题...

回答 2 投票 0

在 javascript 中激活颜色拾取吸管

我想在单击按钮时在 javascript 中激活颜色拾取吸管,这是我的代码 在这里,我通过它的类名定位按钮,然后我试图在单击它时添加一个事件。

回答 0 投票 0

跨标签的事件监听器

我有两个窗口:窗口A和窗口B。 窗口 A 和窗口 B 在同一个 Web 浏览器上处于活动状态。 窗口 A 包含一个脚本。 问题: 窗口 A 是否可以监听事件...

回答 3 投票 0

我在内部元素上没有点击处理程序,但它会触发外部元素中的点击

表格 DIV <body> <form id="form">FORM <div id="div" style="background-color: aqua;">DIV <p id="p" style="background-color: blue;">P</p> </div> </form> <script src="index.js"></script> </body> JS: let form = document.getElementById('form'); let div = document.getElementById('div'); let p = document.getElementById('p'); form.addEventListener("click", e => { // why is this event triggered when I click on p or div? console.log("capturing form") }, true); div.addEventListener("focus", e => { // is intentional console.log("capturing div") }, true); p.addEventListener("focus", e => { // is intentional console.log("capturing p") }, true); 既不在p也不在div我有点击事件但是当我点击p或div时触发表单点击事件 输出: capturing form 这是预期的行为吗? (我在 p 或 div 上没有点击处理程序,但是当我点击 form 或 div 时它会触发 p 中的点击) 是的,为了阻止传播,您必须使用 Event.stopPropagation() 方法来阻止您的 div, p 元素传播事件。 正如您在下面的代码片段中看到的,点击事件将从子元素传播到父元素。 事件冒泡是click事件的预期行为。 let form = document.getElementById('form'); let div = document.getElementById('div'); let p = document.getElementById('p'); form.addEventListener("click", e => { console.log("capturing form click event") }, true); div.addEventListener("click", e => { console.log("capturing div click event") }, true); p.addEventListener("click", e => { console.log("capturing p click event") }, true); <form id="form" tabind>FORM <div id="div" style="background-color: aqua;">DIV <p id="p" style="background-color: blue;">P</p> </div> </form>

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.