PayPal Express Checkout集成与一页上的多个按钮

Mik*_*key 4 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>
Run Code Online (Sandbox Code Playgroud)

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

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

blu*_*ume 11

你需要给每个元素一个唯一的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>
Run Code Online (Sandbox Code Playgroud)


bra*_*chi 5

如果您不喜欢像我这样跟踪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>
Run Code Online (Sandbox Code Playgroud)