我正在shopify商店工作,购物车页面上有一个“从购物车中移除”选项,当他们点击它时会出现一个弹出窗口,确认是否要将其从购物车中删除。 我遇到的问题是弹出窗口仅适用于第一个项目,其他项目只会将您带回页面顶部。
这是我正在使用的代码。
删除文字
<td style="text-align: center">
<a href="#" id="cart_popup">X</a>
</td>
弹出窗口
<!-- The Modal -->
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<p class="modal-index-title">Hey!</p>
<p class="modal-title">Are you sure you want to remove this?</p>
<div class="modal-confirm">
<span class="close">No!</span>
<p><a href="#" onclick="remove_item({{ item.variant.id }}); return false;">Yes</a></p>
</div>
</div>
</div>
脚本
// Get the modal
var modal = document.getElementById('myModal');
// Get the button that opens the modal
var btn = document.getElementById("cart_popup");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
// When the user clicks on the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
答案 0 :(得分:1)
对于DOM元素,ID应该是唯一的,因此您的JS代码将只抓取cart_popup
元素的第一个实例并在那里应用onClick。
如果要将其应用于所有删除购物车按钮,请向其添加CSS类,然后将btn.onclick
函数应用于具有该类的按钮。
编辑:
示例:
var classname = document.getElementsByClassName("classname");
var showModal = function() {
modal.style.display = "block";
};
for (var i = 0; i < classname.length; i++) {
classname[i].addEventListener('click', showModal, false);
}
答案 1 :(得分:0)
您可能有多个具有相同id
属性的元素。只有第一个触发您的btn.onclick
功能。