JS无法正常工作

Har*_*Joy 1 javascript

以下JS无法正常工作:

document.getElementById("btn").value="harry";
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", url, false);
xmlhttp.send(null);
document.getElementById("btn").value="joy";
Run Code Online (Sandbox Code Playgroud)

默认值btnjoy.当我运行它时,值btn不会改变.所有其他的事情都很好.

我希望在ajax请求运行时看到值变为"harry".

为什么价值不变?怎么解决?

HTML代码:

<input id="btn" type="button" value="joy" onclick="change(id)" />
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

id的默认值是joy.当我运行它时,id的值不会改变.所有其他的事情都很好.

代码的最终结果是value将元素的属性设置id为"joy".你暂时将它改为"哈利",但几乎立即将它改回"欢乐".

如果您希望在同步ajax请求运行时将值更改为"harry",则可能会感到失望.同步ajax请求完全锁定大多数浏览器的UI,防止在请求完成之前显示您所做的任何更改 - 当然,在您的情况下,当发生这种情况时,您将值更改回"joy",所以. ..

如果您想在请求运行时看到"harry",请将其设为异步:

document.getElementById("id").value="harry";
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", url, true);
xmlhttp.onreadystatechange = handleReadyStateChange;
xmlhttp.send(null);
function handleReadyStateChange() {
    if (xmlhttp.readyState == 4) {
        // Complete
        document.getElementById("id").value="joy";
    }
}
Run Code Online (Sandbox Code Playgroud)

实例: