0

如果可以的话,请指导我正确的方向。

我的情况

我有一个在PHPfor 循环中提取数据的脚本。在那个循环中,有一个名为Price.In 的参数。在同一个循环中,我使用 javascript 函数将Price、 from转换Jap Yen为,Aus Dollars最后在 .In 中显示价格Aus Dollars

问题

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 回答