2015-11-09 110 views
0

我正在使用magento並試圖自定義購物車。基本上我有一個表,我想改變表格行的內部html。我目前通過「item-options」選擇了所有的類名,然後改變了hte內部的html。但是我得到的問題是他們都變成了相同的價值,並沒有讓產品價值變得渺茫。動態更新表格行

完整代碼。

<?php foreach($this->getItems() as $_item): ?> 
<?php echo $this->getItemHtml($_item) ?> 

<?php $_product= Mage::getSingleton('catalog/product')->load($_item->getProductId()) ?> 

<script> 


var elements = document.getElementsByClassName('item-options'); 
for (var i = 0; i < elements.length; i++) { 
    elements[i].innerHTML = "No Of Devices: <?php echo $_product->getResource()->getAttribute('number_of_devices')->getFrontend()->getValue($_product); ?> || License Period: <?php echo $_product->getResource()->getAttribute('licence_period')->getFrontend()->getValue($_product)." !"; ?> "; 
} 

</script>      

<?php endforeach ?> 

再次聲明我正在改變元素的內部html與類名稱項目選項。然而,我所面臨的問題是,他們都將改變爲他產品的最後價值。例如讓我們說我們有三個產品1,2和3.如果我使用腳本,所有三個值都應該變爲1,2和3,但是它們都是3。我試圖弄清楚爲什麼這很讓人討厭。以及我如何解決它。

回答

2

在所有'item-options'元素腳本更新值,儘量做到不環(和更新僅最後一個值):

var elements = document.getElementsByClassName('item-options'), 
    last = elements.lenght - 1; 

elements[last].innerHTML = "No Of Devices: <?php echo $_product->getResource()->getAttribute('number_of_devices')->getFrontend()->getValue($_product); ?> || License Period: <?php echo $_product->getResource()->getAttribute('licence_period')->getFrontend()->getValue($_product)." !"; ?> "; 

附:我不確定你的innerHTML是否正確。 而且這種設置HTML的方法(php代碼與JS) - 不是一個好主意。

+0

非常感謝。 – Noob

2

你正在做的事是: 你解析php中的所有項目,並找到每個項目,你強制刪除所有的元素項目選項一個一個設置爲在PHP中找到的值。 因此,您將更改n次(對於n件物品)選項,並且您將只顯示最後一個選項。

你必須要做的事情,是用你在php中使用的產品(例如,你在DOM中添加的product_id)匹配項目選項,如果它是好的,你只在這個上使用你的InnerHTML。 請注意,如果您直接通過其product_id識別出您的項目選項,那麼js中的循環不再必要。