
本文针对JavaScript购物车数量增减按钮仅对页面中第一个元素生效的问题,提供了一种高效的解决方案。通过统一类名和DOM遍历,避免了为每个元素单独绑定事件的繁琐操作,大幅简化了代码,并提高了可维护性。同时,还指出了原始HTML结构中存在的一个错误,并提供了修正后的代码示例。
在构建动态网页时,经常会遇到需要重复使用的组件,例如购物车中的数量增减按钮。如果为每个组件单独编写JavaScript代码,会导致代码冗余且难以维护。本文将介绍如何使用JavaScript和DOM操作,实现一套通用的数量增减逻辑,使其适用于页面中所有相同的组件,解决“JavaScript购物车数量增减按钮只对第一个元素生效”的问题。
原始代码的问题在于,它使用了带有数字后缀的类名(例如.cart-button1,.added1,.pqt-plus1,.pqt-minus1)来选择元素,并为每个元素单独绑定事件监听器。这使得代码只能操作页面中的第一个购物车组件。即使尝试使用querySelectorAll,由于后续代码仍然依赖于带有数字后缀的变量,也无法正确地为所有组件绑定事件。
为了解决这个问题,我们需要做到以下几点:
立即学习“Java免费学习笔记(深入)”;
以下是修改后的HTML代码:
<div class="d-flex align-items-center pls-moins">
<span class="count-number float-right">
<button type="button" class="btn-sm left dec btn btn-outline-secondary pqt-minus" data-inc="-1">
<i class="feather-minus"></i> -
</button>
<span class="cart-button">
<span class="added">0</span>
</span>
<button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1">
<i class="feather-plus"></i> +
</button>
</span>
</div>
<div class="d-flex align-items-center pls-moins">
<span class="count-number float-right">
<button type="button" class="btn-sm left dec btn btn-outline-secondary pqt-minus" data-inc="-1">
<i class="feather-minus"></i> -
</button>
<span class="cart-button">
<span class="added">0</span>
</span>
<button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1">
<i class="feather-plus"></i> +
</button>
</span>
</div>
<div class="d-flex align-items-center pls-moins">
<span class="count-number float-right">
<button type="button" class="btn-sm left dec btn btn-outline-secondary pqt-minus" data-inc="-1">
<i class="feather-minus"></i> -
</button>
<span class="cart-button">
<span class="added">0</span>
</span>
<button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1">
<i class="feather-plus"></i> +
</button>
</span>
</div>
<div class="d-flex align-items-center pls-moins">
<span class="count-number float-right">
<button type="button" class="btn-sm left dec btn btn-outline-secondary pqt-minus" data-inc="-1">
<i class="feather-minus"></i> -
</button>
<span class="cart-button">
<span class="added">0</span>
</span>
<button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1">
<i class="feather-plus"></i> +
</button>
</span>
</div>以下是修改后的JavaScript代码:
document.querySelectorAll(".btn-sm").forEach(btn => {
btn.addEventListener('click', e => {
let total = e.target.closest('.pls-moins').querySelector('.added');
total.textContent = Math.max(0, parseInt(total.textContent, 10) + parseInt(e.currentTarget.dataset.inc, 10));
});
});代码解释:
通过统一类名、DOM遍历和使用data属性,我们可以编写出通用的JavaScript代码,使其适用于页面中所有相同的购物车组件。这种方法不仅简化了代码,还提高了代码的可维护性和可重用性。在实际开发中,应该尽量避免为每个组件单独编写代码,而是应该寻找通用的解决方案,以提高开发效率和代码质量。
以上就是JavaScript购物车数量增减按钮只对第一个元素生效的解决方案的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号