我这里有这个代码,
{foreach from=$cart.cartItems item="item" name="cart"}
<div id="cart2Produkt">
<p>{if $item.Product.ID}
<a href="{productUrl product=$item.Product}" data-tooltip="sticky1">{$item.Product.name_lang|truncate:20}</a>
{else}
<span>{$item.Product.name_lang|truncate:20}</span>
</a>
{/if}
<div id="mystickytooltip" class="stickytooltip">
<div style="padding:5px;">
<div id="sticky1" class="atip" style="width:200px;">
<img src="{$item.Product.DefaultImage.paths.3}" alt="{$item.Product.name_lang|escape}"><br>
{$item.Product.name_lang}
</div>
</div>
<div class="stickystatus"></div>
</div>
</p>
<p>
{include file="order/itemVariations.tpl"}
{include file="order/block/itemOptions.tpl"}
{if $multi}
{include file="order/selectItemAddress.tpl" item=$item}
{/if}
</p>
</div>
{/foreach}
我希望每次循环时将“sticky1”中的“1”更改为“2”(它是foreach的一部分)。
但没有运气..加上我对Javascript有点新,不知道如何将文档写在我想要的地方。
答案 0 :(得分:0)
在foreach
循环中生成代码而不是稍后使用javascript修复代码时,更改它会更有效。请注意,如果某人禁用了javascript,您的代码将无法运行,也不会进行更改。如果您在服务器端进行更改,那么它首先会正确生成。
示例:
{foreach from=$cart.cartItems item="item" name="cart"}
<div id="cart2Produkt">
<p>{if $item.Product.ID}
<a href="{productUrl product=$item.Product}" data-tooltip="sticky{$item.Product.ID}">{$item.Product.name_lang|truncate:20}</a>
{else}
<span>{$item.Product.name_lang|truncate:20}</span>
</a>
{/if}
<div id="mystickytooltip" class="stickytooltip">
<div style="padding:5px;">
<div id="sticky{$item.Product.ID}" class="atip" style="width:200px;">
...
使用javascript(和jQuery以后实现相同的目的)。
$(function() {
$('[data-tooltip=sticky1]').each( function(i) {
var tipNo = i + 1;
$(this).attr('data-tooltip','sticky' + i);
});
});
FWIW,使用document.write()只会将内容附加到文档中。您需要使用jQuery(或其他框架)或纯JavaScript来导航DOM,以查找要更改的元素并更新其属性。使用框架IMO通常比使用普通javascript编写相同的代码容易得多。
答案 1 :(得分:0)
看起来你想使用smarty迭代计数器来设置id。请在此处查看示例7-11:http://www.smarty.net/manual/en/language.function.foreach.php
{* this will output sticky1, sticky2, sticky3, ... etc *}
{foreach from=$cart.cartItems item="item" name="cart"}
sticky{$smarty.foreach.cart.iteration},
{/foreach}