动态更新表行

时间:2015-11-09 13:10:01

标签: javascript php jquery html magento

我正在使用magento,我正在尝试自定义购物车。基本上我有一个表,我正在尝试更改表行的内部html。我目前通过" item-options"选择了所有的类名。然后改变内部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 ?> 

再次声明我正在使用classname item-options更改元素的内部html。然而我遇到的问题是他们都将改变为产品的最后一个值。例如,假设我们有三个产品1,2和3.如果我使用脚本,所有三个值应该更改为1,2和3但是它们都是3到3.我试图弄清楚为什么这很开心。以及我如何解决它。

2 个答案:

答案 0 :(得分:2)

你正在做的事情是: 你解析php中的所有项目,对于找到的每个项目,你逐个强制ERASE ALL元素item-options设置为在php中找到的值。 这样,您将更改n次(对于n项)选项,并且您将只显示所有选项的最后一项。

你要做的事情是将你的for中的item-option与你在php中的产品相匹配(例如你在DOM中添加的product_id),如果它是好的,你就是只在这一个上使用你的InnerHTML。 请注意,如果您通过product_id直接识别出item-option,则不再需要js中的循环。

答案 1 :(得分: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)." !"; ?> ";

P.S。我不确定你的innerHTML是否正确。 此外,这种设置HTML的方法(php代码中包含JS) - 不是一个好主意。