在javascript中请求完成后将readyState更改为0

时间:2016-11-18 06:32:58

标签: javascript

我有一个代码,当用户更改dropbox中的值时,它会从数据库中获取相关值并显示在textarea中。 我有一个清晰的按钮来清除textarea的值。 现在,我的问题是,当用户单击清除按钮时,它会清除textarea的值,当用户再次从dropbox中选择任何值时,它不会在textarea中显示relvant值,直到用户刷新页面

my script for showing relevant value in textarea("box is the id of textarea")

 <script>
function showoffer(str) {
var xhttp;
if (str == "") {
document.getElementById("box").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
  document.getElementById("box").innerHTML = this.responseText;

}

};

 xhttp.open("GET", "getc.php?id=<?php echo $aff;?>&q="+str, true);
xhttp.send();
}
</script>

我的clerall按钮脚本

<script>
function clearall()
{
    document.getElementById("box").value="";
}
</script>

1 个答案:

答案 0 :(得分:0)

错误行为是由于您尝试同时使用innerHTML以及value,建议仅使用value获取/设置textareas,但无论如何这里是解释,但首先你不应该浏览器保持内部一致性值在innerHTML改变时总是更新,但不是反过来即。 chaning值不会改变innerHTML

第一次当ajax成功时,你使用innerHTML对textarea说“hello”,注意这也会反映在它的value属性中,所以alert(document.getElementById("box").value)值将与上面指定的值相同(“你好”)但是当你按下clearall() 它只擦除了value属性和textare剩余,即alert(document.getElementById("box").innerHTML)不会为空。现在,这种一致性的中断可能是导致错误行为背后的原因;将innerHTML替换为value将解决该问题