PayPal快速结账与一个页面上的多个按钮集成

时间:2017-03-22 15:45:09

标签: javascript paypal express-checkout

我目前有一个项目列表,其中包含与每个项目关联的Paypal按钮。每个项目将通过单击其相关按钮单独购买。

<ul>
    <li data-id="1">Item 1 <div class="paypal-button"></div></li>
    <li data-id="2">Item 2 <div class="paypal-button"></div></li>
    <li data-id="3">Item 3 <div class="paypal-button"></div></li>
</ul>

<script src="https://www.paypalobjects.com/api/checkout.js"></script>

<script>
    paypal.Button.render({
        // options
    }, '.paypal-button');
</script>

不幸的是,paypal.Button.render()似乎只会呈现它找到的第一个元素。

是否可以对多个元素进行此调用?

2 个答案:

答案 0 :(得分:4)

如果您不想跟踪像我这样的ID,您可以改用类。并使用数据属性来区分。

<div class="paypal-button" data-my-attribute="tree"></div>
<div class="paypal-button" data-my-attribute="dog"></div>
<div class="paypal-button" data-my-attribute="car"></div>

<script src="https://www.paypalobjects.com/api/checkout.js"></script>

<script>
    document.querySelectorAll('.paypal-button').forEach(function(selector) {
        paypal.Button.render({
            // options
            console.log( selector.dataset.myAttribute );
        }, selector);
    });
</script>

答案 1 :(得分:3)

您需要为每个元素赋予唯一的ID,然后多次调用render:

<ul>
    <li data-id="1">Item 1 <div id="button-1"></div></li>
    <li data-id="2">Item 2 <div id="button-2"></div></li>
    <li data-id="3">Item 3 <div id="button-3"></div></li>
</ul>

<script src="https://www.paypalobjects.com/api/checkout.js"></script>

<script>
    [ '#button-1', '#button-2', '#button-3' ].forEach(function(selector) {
        paypal.Button.render({
            // options
        }, selector);
    });
</script>