0

できれば正しい方向に導いてください。

私の状況

PHPfor ループでデータを取得するスクリプトがあります。そのループには と呼ばれるパラメータがありますPrice。同じループで、javascript 関数を使用してPriceを からに変換Jap YenAus Dollars、最終的に で価格を表示しAus Dollarsます。

問題

私はAUDで価格を表示するために使用getElementByIdしています。これが私のjs機能です

function CarCostCalculatorSINGLE(enteredPriceInYen,spanID){

    document.getElementById("calPriceInAudSINGLE"+spanID).innerHTML="$"+TotalCarCostInAUD.formatMoney(0, '.', ',');
}

そして、私のphpスクリプトでは、カウンターを使用してスパンの最後に数字を追加し、IDs衝突しないようにしています。

$callPriceInAudCounter++; 
<span id="calPriceInAudSINGLE<?php echo $callPriceInAudCounter; ?>">AUD Price Goes Here</span> 

<script>
    CarCostCalculator(<?php echo $fields['price']; ?>, <?php echo $callPriceInAudCounter; ?>);
</script> 

道に迷いました

include一部のページでは、表示するためにループする必要がSide bar contentあり、IDs大きな衝突が発生したため、私は今迷っています。これはこれに取り組む最善の方法ではありません。機能を複製せずにループにとどまり、価格を表示するために他に何ができるかわかりません。代替手段はありgetElementByIdますか、またはこれに取り組む最善の方法を教えてください。

もっと明確にしたい場合は教えてください。私は喜んでいます。

4

1 に答える 1

1

最善の解決策ではありませんが、uniqidを使用できます。

<?php $elementID = uniqid('calPriceInAudSINGLE'); ?>

<span id="<?php echo $elementID ?>">AUD Price Goes Here</span> 

<script>
    CarCostCalculator(<?php echo $fields['price']; ?>, "<?php echo $elementID ?>");
</script>

jQuery が利用できる場合は、より良い解決策を提供できます。

<span class="aud-price" data-yen-price="<?php echo $fields['price']; ?>">AUD Price Goes Here</span>

そして、あなたのJavaScriptのどこかに:

// onload (assuming all the elements are loading at once (ie not AJAX))
$(function () {
    $(".aud-price").each(function () {
        var self = $(this);

        self.html( "$"+TotalCarCostInAUD.formatMoney(self.data("yen-price"), '.', ',') );
    });
});
于 2013-02-24T07:51:49.190 に答える