弹出模式仅适用于第一项

时间:2017-06-29 01:09:17

标签: javascript jquery shopify

我正在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";
      }
  }

2 个答案:

答案 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功能。