javascript - 如何让多个按钮在同一页面上触发一个js函数

标签 javascript html stripe-payments

我如何能够使用 2 个不同的按钮在同一个 if 语句中呈现同一个产品购买模式?

我有一个页面,其中只有一个产品,但有 3 个付款按钮(在一种情况下呈现 2 个,在另一种情况下使用 if/else 语句呈现 1 个)。

if 部分中的第一个按钮有效,另一个按钮在 else 中有效,但第二个按钮在 if 中无效。

我已经尝试使用 .getElementsByClassName('purch-btn') 并分别更改按钮类。

我也尝试过使用 .querySelectorAll('btn_buy, btn_buy_two') 并将其中一个 ID 分配给每个按钮。

这些都不起作用。

打包 View :

<% if @pack.category_id == "sample-pack" %>

  <div class="col-md-4">
    <div class="wellington top-drop prod-pod">
      <button class="btn btn-success btn-block" id="btn_buy" type="button">Purchase This Library</button>
    </div>
  </div>

  <div class="col-md-12">
    <button class="btn btn-success btn-block top-drop" id="btn_buy_two" type="button">Purchase This Library</button>
  </div>

<% else %>

  <div class="col-md-8">
    <div class="wellington top-drop">
      <button class="packview-addcart btn btn-lg btn-success" id="btn_buy" type="button">Buy!</button>
    </div>
  </div>

<% end %>
<%= render 'purchase_modal' %>

购买模式:

<script>
  var handler = StripeCheckout.configure({
    key: '<%= Rails.configuration.stripe[:publishable_key] %>',
    token: function(token, arg) {
      document.getElementById("stripeToken").value = token.id;
      document.getElementById("stripeEmail").value = token.email;
      document.getElementById("chargeForm").submit();
    }
  });
  document.getElementById('btn-buy').addEventListener('click', function(e) {
    handler.open({
      zipCode: 'true',
      // image: '<%= @pack.art_link %>',
      name: '<%= @pack.title %>',
      description: 'Total: $<%= @pack.price %> USD',
      amount: document.getElementById("amount").value
    });
    e.preventDefault();
  });

  // Close Checkout on page navigation:
  window.addEventListener('popstate', function() {
    handler.close();
  });
</script>

最佳答案

像这样

document.querySelectorAll('#btn_buy, #btn_buy_two').forEach(function(btn) { btn.addEventListener('click', function(e) {
    handler.open(...[YOUR CODE]...);
    e.preventDefault();
  })
});

关于javascript - 如何让多个按钮在同一页面上触发一个js函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54650967/

相关文章:

用于幻灯片放映的 Javascript 无法正常工作

java - Greasemonkey 脚本使用小程序标签更改 img 标签

python - 捕获来自 Stripe 资金不足的 API 响应

javascript - 如何实现点击功能

html - :hover not working on my svg path

php - 将税率应用于付款意图

php - 使用 Try/Catch PHP 方法捕获 Stripe 错误

javascript - 这个表达式是什么意思 : "javascript:{}"

javascript - 查找数组中最近的点

javascript - 如何在对底层 Div 产生模糊效果后获得模糊效果