2017-06-28 16 views
-1

こんにちはを開始「のonchange」私は2で、ドロップダウン「選択」している添付アクションは、唯一のJavaスクリプト

echo "<select id='selecttask' name='task' onchange='showpcaction(this.value);showpcinterview(this.value);'>"; 
echo "<option disabled selected>"; 
while ($row = db2_fetch_assoc($stmt)) { 
echo "<option value='".$row['TASK_NAME']."'>".$row['TASK_NAME']."`</option>";} 
echo "</select>";` 

「のonchange」の問題は、一方だけが(それは常にsedond一つだ)実際にあるということです開始しました。私はそれらのうちの1つを開始することはできますが、両方を開始することはできません。 これまで何も問題はなかったので、何が起きているのか分かりません。ここ

は2つのジャバスクリプトです:

function showpcinterview(task_name) {    

if (task_name == 'Interview'){ 

      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("pc_interview").innerHTML = xmlhttp.responseText; 
     } 
    }; 

    xmlhttp.open("GET","showpcinterview.php",true); 
    xmlhttp.send(); 

} 

else{ 
document.getElementById("pc_interview").innerHTML =""; 

} 
} 


       function showpcaction(task_name) { 


      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("pc_action").innerHTML = xmlhttp.responseText; 
     } 
    }; 

    xmlhttp.open("GET","showpcaction.php?task_name=" + task_name,true); 
    xmlhttp.send(); 


} 
+0

、私はこのような単純なものと「のonchange」のJS関数の1つを交換する場合:\t 関数testjs(テスト){ \t \tアラート(テスト);} それは両方を実行するが、それ最初の質問では両方とも実行されません –

+0

私は、両方の関数で同じ 'xmlhttp'変数を使用していると思います.2番目の関数は最初のものを上書きします。私は、あなたがそれへの参照を捨てるときに最初に付けられたコールバックなどに何が起こるかは確かに分かりません(したがって、コメントではありません)。しかし、ガベージコレクションされる可能性は高いです火事はしないでください。 –

+0

@JamesThorpeええ、それはひどくそれを言いました - 私は私のコメントを削除し、より良い説明を追加します:)ああ、私はあなたがかなり前に6mins前に笑って言った参照してください笑!コメントする必要はありません:)再び私は繰り返し述べます - いいえインラインJS! :)また、それはJavaScriptスクリプトです - それらをJavaスクリプトと混同させないでください;) – ThisGuyHasTwoThumbs

答えて

1

は単にvarキーワードを使用して、機能の範囲内で、あなたのXMLHTTPを宣言するようにしてください。

あなたのケースでは、varステートメントが存在しないので、オブジェクトはグローバルなので、最初の関数では初めて宣言され、リスナーを配置してリクエストを送信しますが、2番目の関数ではすぐにこのオブジェクトを再宣言しますreadystateリスナを強制終了します。

したがって、両方の関数でこのようにオブジェクトを宣言してください:var xmlhttp = new XMLHttpRequest();

また
+0

ありがとうございました!私は今夜​​あなたの名前を私の心の豊かなワインと一緒に乾杯します! –