这是一个购物车的部分代码,用来显示购物车中的内容
现在的问题,如果购物车里有很多个东西,购物车只有第一个物品可以调用count()函数,其他的都失效,我发现时因为<input id="num">都一样的关系,请问应该如何做,在count()中传id的值为参数,达到不同物品都可以调用count()
count(a,b)这样传两个参数就行了我觉得,但是不知道该怎么传那个<input>和<label>id的值function count(){
  var numval=document.getElementById("num").value;  //获取购买数量
  var priceval=document.getElementById("price").innerHTML; //获取物品单价
  var storeval=document.getElementById("store").innerHTML;  //获取库存的值
  if(numval==""||numval<=0){
    document.getElementById("subtotal").innerHTML="数量不能小于等于0或空";
    return false;
    }
  else if(storeval<numval){    //购买数量大于库存
  //sendRequest(document.getElementById("num").value);
    document.getElementById("subtotal").innerHTML="库存不足";
    return false;
    }
  else{
    document.getElementById("subtotal").innerHTML=parseFloat(numval*priceval).toFixed(2);
    return true;
    }<?php
  for($k=0;$k<count($cartCheck);$k++){        //$cartCheck是个数组,存放购买的物品的id,
  $str="select * from books where b_id=".$cartCheck[$k];
  $result=mysql_query($str);
  while($row=mysql_fetch_array($result)){     //这句显示有误,但是数据可以读出来
    $total+=$row['b_price'];     //计算总价
    //$tag="num".$cartCheck[$k];
?>
<tr>
  <td width="">
    <div align="center"><?php echo $row['b_name'];?></div>
  </td>
  <td width="">
    <div align="center" id="store"><?php echo $row['b_number'];?></div>
  </td>       
  <td width="">
    <div align="center" id="price"><?php echo $row['b_price'];?></div>
  </td>
  <td width="" align="center">
    <input id="num" type="text" value="1" size="5" onchange="count();">    //在数量变换后,单种物品总价变化
  </td>
  <td width="" align="center">
    <label id="subtotal"><?php echo $row['b_price'];?></label>   //用来显示单个物品总价
  </td>
  <td width="">
    <div align="center">删除</div>
  </td>
</tr>
<?php
    }
  }
?>

解决方案 »

  1.   

    <?php
      $row=1
      while{
    ?>
          <div align="center" id="store_<?php echo $row; ?>">
          <div align="center" id="price_<?php echo $row; ?>">
          <input id="num_<?php echo $row; ?>" type="text" value="1" size="5" onchange="count(<?php echo $row; ?>);">    //在数量变换后,单种物品总价
    <?php
          $row++;
      }
    ?>
      

  2.   

    id="num",把num改成商品的goods_id(<?php echo $row['goods_id'];?>), 
    <label id="subtotal"> ,subtotal后也加上goods_id,
    在count(a,b)函数中传递,
    这样获取时就不是相同的id了
      

  3.   

    恩  用商品id来区别最好了 上面的$row可以用商品id来赋值
      

  4.   

    a 和 b 分别对应的是input框的id 和label 的id
      

  5.   

    我突然发现一个问题就是比如你传了两个实参count(num,price),num,price表示ID值,然后形参是count(a,b),那你 用的时候肯定是getElementById("a")这样来,其实他搜的时候还是搜id="a"的那个元素,而不管你形参a,b里面存的是什么,这样还是不行的
      

  6.   

     <td width="">
        <div align="center" id="store_<?php echo $row['goods_id']?>"><?php echo $row['b_number'];?></div>
      </td>       
      <td width="">
        <div align="center" id="price_<?php echo $row['goods_id']?>"><?php echo $row['b_price'];?></div>
      </td>
      <td width="" align="center">
        <input id="num_<?php echo $row['goods_id']?>" type="text" value="1" size="5" onchange="count(<?php echo $row['goods_id']?>);">    //在数量变换后,单种物品总价变化
      </td>
      <td width="" align="center">
        <label id="subtotal_<?php echo $row['goods_id']?>"><?php echo $row['b_price'];?></label>   //用来显示单个物品总价
      </td>
    function count(goods_id){
      var numval=document.getElementById("num_"+goods_id).value;  //获取购买数量
      var priceval=document.getElementById("price_"+goods_id).innerHTML; //获取物品单价
      var storeval=document.getElementById("store_"+goods_id).innerHTML;  //获取库存的值
      if(numval==""||numval<=0){
        document.getElementById("subtotal_"+goods_id).innerHTML="数量不能小于等于0或空";
        return false;
        }
      else if(storeval<numval){    //购买数量大于库存
      //sendRequest(document.getElementById("num_"+goods_id).value);
        document.getElementById("subtotal_"+goods_id).innerHTML="库存不足";
        return false;
        }
      else{
        document.getElementById("subtotal_"+goods_id).innerHTML=parseFloat(numval*priceval).toFixed(2);
        return true;
        }