addeventlistener 相关问题

一种DOM事件方法,用于将事件侦听器添加到给定的DOM节点

在Chart级别监听事件时,是否可以通过事件参数获取被点击的元素类型,类似于dom?

使用VChart图表库时,是否可以监听整个图表或画布,然后根据返回的参数,如type、sim等判断点击是否在axis/legend/item上...

回答 1 投票 0

仅在父级点击而非子级点击时触发事件

以以下代码为例: 信息在这里 //javascript 功能某事{ //做一点事;} //初始注意...

回答 3 投票 0

如何使用 Javascript 代码通过按钮在两个图像之间切换?

我有一个包含图像的 HTML 文档,我想单击一个按钮来 在彩色版本和黑白版本之间切换。我的 javascript代码如下。我意识到...

回答 4 投票 0

使用 addEventListener() 和 React useReducer() 返回多个按键

我正在制作一个带有React的计算器,并希望添加功能让用户直接从键盘输入数字,我使用了window.addEventListner()和useEffect(),但是当我...

回答 1 投票 0

useEffect 在依赖项更改时不重新加载

我试图在页面上显示屏幕尺寸,每次拖动时尺寸发生变化,我希望在拖动窗口时屏幕上的尺寸也发生变化。 有人可以向我解释一下...

回答 1 投票 0

为什么 addEventListener() 只能从 document.querySelector 获取元素上的 fullscreenchange 和 fullscreenerror 事件的建议?

我想要什么(为文档对象上的 addEventListener 建议的所有事件的示例): 我所拥有的(从我的 document.querySel 返回的对象上为 addEventListner 建议的事件...

回答 1 投票 0

React useState 似乎不适用于事件监听器(Next.js)

我正在尝试创建一个网页,该网页的右上角有一个固定的汉堡包图标,单击时会打开一个导航栏。如果用户单击导航栏之外,则应关闭导航栏并显示汉堡包图标...

回答 1 投票 0

修复“未捕获的类型错误:无法读取 HTMLDivElement 处未定义的属性(读取“添加”)。<anonymous>”

我正在尝试将鼠标悬停在游戏区域内的任何方块上,从而为它们添加“变暗”类。游戏区域按预期生成,但没有添加类,...

回答 1 投票 0

石头剪刀布游戏中“再玩一次”后事件侦听器未重新连接

说明: 我正在使用 HTML、CSS 和 JavaScript 构建一个简单的剪刀石头布游戏。游戏最初运行良好,用户可以做出选择并与计算机对战。然而,...

回答 1 投票 0

如何调用回调中定义的数组?

我需要弄清楚如何调用回调函数中定义的对象数组。我正在尝试使用 forEach 循环的对象数组来显示每个对象并将其添加到所需的位置...

回答 1 投票 0

锚点元素上的单击事件侦听器也适用于锚点的子元素

我在锚点上使用了单击事件监听器,但是锚点内部也有一个跨度,如果单击锚点内的跨度,事件监听器将不起作用。 文件。

回答 1 投票 0

有没有办法避免在javascript中多次点击某个事件

当我点击按钮时,它只会加速计时器。我点击的次数越多,速度就越快 playBtn.addEventListener('点击', () => { if (timerStatus == "已停止") { 定时器间隔...

回答 1 投票 0

如何在javascript中按下和释放按钮?

我希望它在单击按钮时改变颜色,并在代码中实现它。但如何才能让按钮再次按下时变为原来的颜色呢?所以我希望按钮在

回答 1 投票 0

使用下拉菜单时Clickevent显示错误位置

我想1:1重播所有点击事件。不幸的是,它不适用于下拉菜单。每当我在下拉列表中选择一个值时,它都会显示错误的位置(请随意在我的代码片段中测试它......

回答 1 投票 0

Javascript 点击事件触发两次,即使使用 stopPropagation

我有一组这样的物品: 我有一套这样的物品: <label for="Cadenza-1" class="cars"> <input type="checkbox" value="1" alt="Cadenza" id="Cadenza-1" name="vehicles[]"> <img src="img/bill_murray_173x173.jpg"> <span>Cadenza</span> </label> 大约有13个。我想在单击时向标签添加一个类。但是,单击事件会触发两次。现在我正在调试单击事件,然后我将添加该类: var cars = document.getElementsByClassName('cars'); for(var c = 0;c < cars.length; c++){ cars[c].addEventListener("click", function(e){ selectVehicle(cars[c],e); },false); } function selectVehicle(el,e) { console.log(e); e.stopPropagation(); } console.log 会发射两次。 尝试在 stopPropogation 之后添加 PreventDefault: function selectVehicle(el,e) { console.log(e); e.stopPropagation(); e.preventDefault(); } 我认为最好将 console.log(e) 放在 stopPropogation 和 PreventDefault 之后。然后,您还需要实现将复选框设置为选中的功能,因为这会阻止这种情况发生。 当 <span> 或 <img> 收到“click”事件时,会将 DOM 向上冒泡到 <label> 元素,并且将调用您的事件处理程序。然后,<label> 会触发 <input> 元素上的 另一个 “单击”事件,并且该事件也会冒泡到 <label>。 您可以检查处理程序以查看是否单击了<input>: function selectVehicle(el,e) { if (e.target.tagName !== "INPUT") return; // do stuff } 或者,您可以仅将“单击”处理程序添加到 <input> 本身。 现在您还会注意到您的代码无法正常工作,因为您遇到了在循环内绑定事件处理程序的常见问题。问题是,在事件处理程序实际运行时,变量 c 的值将是 cars 列表的长度。有几种方法可以解决这个问题;一种是使用 forEach() 循环而不是 for 循环: [].forEach.call(cars, function(car) { car.addEventListener("click", function(e){ selectVehicle(car,e); }, false); }); 您要将事件侦听器添加到标签,您应该将事件侦听器添加到复选框,因为标签行为复制在 for 中分配的相同输入。 请注意,如果您仅单击复选框,则回调可以正常工作,这是因为标签上的事件是由复选框引发的。 正确的方法是仅为复选框添加事件侦听器或在 setlectVehicle 回调中添加阻止默认值。 您不需要阻止Default或stopPropagation,而只需在输入元素上添加监听器即可。 cars[c].children[0].addEventListener("click", function(e) { 试试这个。它正在按预期工作。 此外,如果标签元素包含所需的输入/其他元素,则不需要将 Id 与标签一起使用 var cars = document.getElementsByClassName('cars'); for (var c = 0; c < cars.length; c++) { cars[c].children[0].addEventListener("click", function(e) { selectVehicle(cars[c], e); }, false); } function selectVehicle(el, e) { console.log(e); } <label class="cars"> <input type="checkbox" value="1" alt="Cadenza" name="vehicles[]"> <img src="img/bill_murray_173x173.jpg"> <span>Cadenza</span> </label> <label class="cars"> <input type="checkbox" value="1" alt="Cadenza" name="vehicles[]"> <img src="img/bill_murray_173x173.jpg"> <span>Cadenza 2</span> </label> 或者您可以简单地保留 JavaScript 代码不变。并将输入元素放在标签之外,如下所示: <label for="Cadenza-1" class="cars"> <img src="img/bill_murray_173x173.jpg"> <span>Cadenza</span> </label> <input type="checkbox" value="1" alt="Cadenza" adenza-1" name="vehicles[]"> 这是你的Javascript 未触及: var cars = document.getElementsByClassName('cars'); for(var c = 0;c < cars.length; c++){ cars[c].addEventListener("click", function(e){ selectVehicle(cars[c],e); },false); } function selectVehicle(el,e) { console.log(e); e.stopPropagation(); } 我发现只有一个对我有用的解决方案:强制调用 addEventListener 一次。我回答了这个问题:https://stackoverflow.com/a/76873072/8122578

回答 6 投票 0

为什么 vanilla js addEventListener 在 WordPress 中不起作用?

我检查了其他类似的问题,但它们的代码都有错误。 这是一个不同的情况。 这段代码中的 jQuery 部分工作正常,但如果我使用普通 js,

回答 1 投票 0

有没有办法在addEventListener中同时定位两个事件?

我正在尝试使用 JavaScript 定义一些悬停属性。因此,我决定为元素使用“mouseenter”和“mouseleave”事件。现在,我必须调用相同的函数...

回答 2 投票 0

使用 jQuery on() 和 off() 切换事件监听器

我有一个 JavaScript 代码片段“代码片段 1 - 在用户触摸交互上播放通过 Ajax 加载的 html 视频”,它使用 on('touchstart') jQuery 方法附加事件侦听器...

回答 1 投票 0

页面重新加载后保存/传递/获取事件

我尝试使用自定义网址方案打开科尔多瓦应用程序。 当我在触发事件后使用它时,它工作正常,如下所示: 福...

回答 2 投票 0

“更改”事件侦听器不适用于移动设备上的 <select> 元素。 (HTML、JS)

如果另一个 元素已填写,我正在尝试切换 元素的禁用属性。目前它在计算机浏览器上完美运行,包括 chrome 和

回答 1 投票 0

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