Javascript函数不是从onchange调用的(并非总是如此)


Javascript function not being called from onchange (not always)

目前,我正在创建一个网站,其中我有一些数量有限的产品。此数量取决于大小和颜色。

因此,我想出了以下程序来检查并反馈还剩下多少。

<div class="product_stock" id="stock_form<?php echo $i; ?>"><?php 
  $size = $product_sizes[0];
  $color = $product_colors[0];
  $sql = "SELECT * FROM products WHERE product_id = '$product_id' AND size = '$size' AND color = '$color'";
  $result = mysql_query($sql) or die(mysql_error());  
  echo $sql;
  if(mysql_num_rows($result) > 0) {
    $product_stock = mysql_fetch_array($result);
    if($product_stock['stock'] > 0) {
      echo "Nog ".$product_stock['stock']." verkrijgbaar";
    } else {
      echo "Combinatie is niet meer verkrijgbaar";
    } 
  }?>
</div>
<div class="product_text"> 
  <?php echo $product['text']; ?>       
</div>
<div class="product_num">
  art: #<?php echo $product['product_id']; ?>
</div>
<div class="product_bar_bot">
  <form name="form<?php echo $i; ?>" action="shopping_cart.php?">
    <input type="hidden" name="id" value="<?php echo $product['pid']; ?>"/>
      <select name="size" class="product_select" onChange="get_stock('form<?php echo $i; ?>');">
    <?php foreach($product_sizes as $p_size) { ?>
    <option>
      <?php echo $p_size; ?>
    </option>
  <?php } ?>
</select>
<select name="color" class="product_select" onChange="get_stock('form<?php echo $i; ?>');"> 
  <?php foreach($product_colors as $p_color) { ?>
    <option value="<?php echo $p_color; ?>">
      <?php echo $color_array[$p_color]; ?>
    </option>
  <?php } ?>
</select>
<input type="hidden" name="url" value="sale">
<input type="hidden" name="action" value="add">
<input type="text" name="amount" value="1" size="1" style="vertical-align: top; margin-top: 9px;"></input>
<img src="images/icons/cart_shop.png" align="top"/> 
<input type="submit" class="button" value="Voeg toe" style="vertical-align: top; margin-top: 7px;">

需要调用的函数:

function get_stock(formid) {
  var form = document.forms[formid];
  var size = form.size.value;
  var color = form.color.value;
  var pid = form.id.value;
  var stock = 'stock_'+formid;
  // code for IE7+, Firefox, Chrome, Opera, Safari
  if (window.XMLHttpRequest)  {
    xmlhttp=new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById(stock).innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","get_stock.php?id="+pid+"&size="+size+"&color="+color,true);
  xmlhttp.send();
}

我遇到的问题是它确实适用于某些表单,但对于某些表单,甚至没有调用get_stock.php页面。

如果需要更多信息,请随时询问。

由于@Bergi的评论,我犯了一个已经修复的小错误。我每次在$i处添加+1来创建表单,但是我在错误的位置重置了$i,例如,这导致了$i = 1中的多个。