各位,不好意思,求助一个问题.
近日在做购物车页面,购物车里的购买数量是可以通过点击"+"和"-"实现数量的加减的,但当用{foreach}读取出购物车列表时,无论点击那个商品相应input的"+"和"-",都是更新第一个input的数据.请问有什么办法能让我点击不同商品的"+"和"-"更新相应商品input里的数量?shopcart.php里的部分代码:
{foreach from=$carts item=cart}
                     <tr height="129">
                         <td>{$cart.pid}</td>
                         <td>
                             <center><img src="pimages/{$cart.ppic_s}" alt="{$cart.pname}"/></center>
                                <center><a href="#">{$cart.pintro}</a></center>
                            </td>
                         <td align="center">{$cart.pname}</td>
                         <td align="center">¥{$cart.pprice}</td>
                         <td align="center"><a href="javascript:abdc();"><img src="images/bg_open.gif" /></a><input id="shuliang"name="{$cart.pid}" type="text" size="2" value='{$cart.qty}'><a href="javascript:abdce();"><img src="images/bg_close.gif" /></a></td>
                         <td align="center">¥{$cart.pprice*$cart.qty}</td>
                         <td align="center"><a href="cart.php?act=delete&pid={$cart.pid}">删除</a></td>
                        </tr>
                  {/foreach}
js里的代码:
function $(e){
return document.getElementById(e);
}
function abdc(){
var sl=$('shuliang').value;
sl=parseInt(sl)+1;
$('shuliang').value=sl;
}
function abdce(){
var sl=$('shuliang').value;
if (sl>0){
sl=parseInt(sl)-1;
}
$('shuliang').value=sl;
};

解决方案 »

  1.   

    给abdce()函数加个参数,foreach的${cart.pid},每个input的id也给上这个,你的$('shuliang').value;拿的都是foreach的第一个对象,后面的不会在找的,通过id定位对象的时候id有重复的只会返回第一个对象,所以把你的每个input的id改成¥{cart.pid},然后每个input后面的a标签的onclick事件的abdce(pid)函数加上商品编号的id,确保id不重复,然后取定位修改就ok了
      

  2.   

    input的id要区分开,点那个能对应上
      

  3.   

    {foreach from=$carts item=cart}
      <tr height="129">
      <td>{$cart.pid}</td>
      <td>
      <center><img src="pimages/{$cart.ppic_s}" alt="{$cart.pname}"/></center>
      <center><a href="#">{$cart.pintro}</a></center>
      </td>
      <td align="center">{$cart.pname}</td>
      <td align="center">¥{$cart.pprice}</td>
      <td align="center"><a href="javascript:abdc({$cart.pid});"><img src="images/bg_open.gif" /></a><input id="{$cart.pid}"name="{$cart.pid}" type="text" size="2" value='{$cart.qty}'><a href="javascript:abdce({$cart.pid});"><img src="images/bg_close.gif" /></a></td>
      <td align="center">¥{$cart.pprice*$cart.qty}</td>
      <td align="center"><a href="cart.php?act=delete&pid={$cart.pid}">删除</a></td>
      </tr>
      {/foreach}
    js里的代码:
    function $(e){
    return document.getElementById(e);
    }
    function abdc(pid){
    var sl=$('pid').value;
    sl=parseInt(sl)+1;
    $('pid').value=sl;
    }
    function abdce(pid){
    var sl=$('pid').value;
    if (sl>0){
    sl=parseInt(sl)-1;
    }
    $('pid').value=sl;
    };
    好了还有我记得,el表达式是${....}这样取吧.{$...}可以出来了么?
      

  4.   

    谢谢解答,不过好像读取不到input里的ID,是不是input 里的id不能是"{$cart.pid}"?