Javascript函数没有从onchange调用(并不总是)

时间:2012-06-04 14:48:26

标签: php javascript html

目前,我正在创建一个网站,我有一些数量的产品。此数量取决于尺寸和颜色。

所以我想出了以下程序来检查并提供有关剩余数量的反馈。

<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页面甚至没有被调用。

如果需要更多信息,请不要犹豫。

1 个答案:

答案 0 :(得分:0)

由于@ Bergi的评论,我做了一个我已经修复过的小错误。我通过每次在$ i添加+1来创建表单,但我在错误的位置重置了$ i,这导致$ i = 1中的一个以上。