为什么点击事件函数只能执行一次?
const dataArr = [
{
id: 1,
icon: 'http://autumnfish.cn/static/火龙果.png',
isChecked: true,
num: 2,
price: 6,
},
{
id: 2,
icon: 'http://autumnfish.cn/static/荔枝.png',
isChecked: false,
num: 7,
price: 20,
},
{
id: 3,
icon: 'http://autumnfish.cn/static/榴莲.png',
isChecked: false,
num: 3,
price: 40,
},
{
id: 4,
icon: 'http://autumnfish.cn/static/鸭梨.png',
isChecked: true,
num: 10,
price: 3,
},
{
id: 5,
icon: 'http://autumnfish.cn/static/樱桃.png',
isChecked: false,
num: 20,
price: 34,
},
]
// 个数添加功能
const jia = document.querySelectorAll('.increase')
const jian = document.querySelectorAll('.decrease')
for (let i = 0; i < jia.length; i++) {
jia[i].addEventListener('click', function () {
console.log(123)
dataArr[i].num++
render(dataArr)
// console.log(arr2)
// render(arr2)
})
}
以上代码我运行的时候,第一次是能执行的,功能也是正常,但是再次点击后没有反应了?也没有报错。
我以为是通过for循环多次绑定事件有问题,但是只对一个标签绑定事件也只能执行一次。
我查询过答案,得到一个类似的答案,说是通过innerHTml实现会让页面重新渲染Dom元素,我的代码也会进行一次数据处理然后重新渲染?是这个问题导致的绑定事件失效了吗?求解答。
查到的答案没问题,innerHtml会把当前元素的内容替换为新的内容,而点击事件绑定也会随着替换而销毁,只有在替换后重新绑定才生效。
所以,一般这种场景建议用事件委托方式,在希望通过innerHtml替换内容的元素父节点上绑定点击事件,通过事件回调函数里面的传入的参数event.target, 判断是点击了➕ 还是➖。
问题内容: 当我运行以下脚本时,该事件总是在页面加载时触发。我不确定在这里做错了什么,我创建了元素,在DOM中找到它,然后附加了一个侦听器,但是它总是在页面加载时触发事件,而不是在单击元素时触发事件。 问题答案: el.addEventListener(“click”, alert(“clicktrack”), false); 执行此行后,将调用并返回。要传递警报代码,您需要将其包装在一个函数中。
问题内容: 谁能用JavaScript解释事件委托,它有什么用? 问题答案: DOM事件委派是一种机制,它通过事件“冒泡”(也称为事件传播)的魔术,通过单个公共父节点而不是每个子节点来响应ui事件。 在元素上触发事件时,将发生以下情况: 事件被调度到其目标,并且在该目标中 找到的所有事件侦听器都会被触发。 然后,冒泡事件将触发所有其他事件侦听器,这些事件侦听器可通过向上跟随父链来查找在每个连续上注
本文向大家介绍什么是JavaScript中的onmousedown事件?,包括了什么是JavaScript中的onmousedown事件?的使用技巧和注意事项,需要的朋友参考一下 按下鼠标按钮时会触发onmousedown事件。 示例 您可以尝试运行以下代码以了解如何使用JavaScript中的onmousedown事件-
本文向大家介绍什么是JavaScript中的onmouseover事件?,包括了什么是JavaScript中的onmouseover事件?的使用技巧和注意事项,需要的朋友参考一下 的onmouseover 事件触发时在一个元素上鼠标指针移动。 示例 您可以尝试运行以下代码以了解如何在JavaScript中使用onmouseover 事件-
本文向大家介绍什么是JavaScript中的onmouseout事件?,包括了什么是JavaScript中的onmouseout事件?的使用技巧和注意事项,需要的朋友参考一下 当鼠标指针移出元素时,将触发此事件。 示例 您可以尝试运行以下代码以了解如何在JavaScript中使用onmouseout事件-