'onchange'只启动一个java脚本

时间:2017-06-28 11:23:05

标签: javascript php

您好我有一个“选择”下拉菜单,附加了2个“onchange”操作

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>";`

问题在于,实际上只有一个(它始终是sedond)。我可以让其中一个开始,但不能同时开始。 我之前没有遇到任何问题,所以不确定是什么。

这是2个java脚本:

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();


}

1 个答案:

答案 0 :(得分:1)

尝试使用var关键字在函数范围内简单声明xmlhttp。

在你的情况下,因为没有var语句,所以对象是全局的,所以,在你的第一个函数中第一次声明,放置一个监听器并发送请求,但是然后在你的第二个函数中你重新声明这个对象,从而杀死了现有的听众。

所以只需在两个函数中声明这样的对象:var xmlhttp = new XMLHttpRequest();