0

基本的にドロップダウンメニューから値を取得することになっている2つの関数を定義し、選択したものに応じて、AJAXを使用してテーブルとフォームをスローします。

これが私の2つの機能です:

function showParts(str)
{
if (str=="")
  {
  document.getElementById("partvalues").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  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("partvalues").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getparts.php?q="+str,true);
xmlhttp.send();
}

function showOrders(str)
{
if (str=="")
  {
  document.getElementById("otherparts").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  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("otherparts").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","formOrder.php?q="+str,true);
xmlhttp.send();
}
</script>

私はこれらの2つの機能をテストしましたが、どちらも正しく機能します。適切な値を取得するためのクエリを持つ2つのPHPページがあります。しかし、問題は、両方をonchangeイベントとして実行しようとすると、どちらも機能しないことです。

echo "<select name = finishgood_list onchange = showParts(this.value); showOrders(this.value)>";
        while ($row = mysql_fetch_array($result))
        {
            echo "<option value='" . $row['fg_id'] . "'>" . $row['fg_id'] . "</option>";
        }

括弧内に関数をネストしようとすると、ドロップダウンメニューで値を変更してもどちらも機能しません。私はそれらを個別にテストしましたが、両方とも正常に動作しますが、両方を同時に動作させることはできません。最初の関数のみが実行されているため、これらを変更すると、showOrderは機能しますが、他の関数は機能しません。

ここに何か問題はありますか?この方法で実行できない場合、ドロップダウンメニューから値を選択するときに適切な値を動的に取得する別の方法はありますか?

4

1 に答える 1

0

推測では、最も明白な変更は

echo "<select name = finishgood_list onchange = showParts(this.value); showOrders(this.value)>";

echo "<select name = 'finishgood_list' onchange = 'showParts(this.value); showOrders(this.value);' >";

つまり、属性を引用符で囲みます。

于 2012-11-04T02:56:41.067 に答える