1

这2个代码有什么区别?

一:如果xmlhttp.readystate==4,那么如果xmlHttp.status==200,那么执行代码

function handleServerResponse(){
   if(xmlHttp.readyState==4){
            if(xmlHttp.status==200){
               xmlResponse = xmlHttp.responseXML;
               xmlDocumentElement = xmlResponse.documentElement;
               message = xmlDocumentElement.firstChild.data;
               document.getElementById('underInput').innerHTML = message;
               setTimeout('process()', 1000);
         }else{
            alert('Something went wrong!');
            }
      }
}

二:如果 xmlHttp.readtState==4 和 xmlHttp.Status==200 则执行代码

function handleSxerverResponse(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
    xmlResponse = xmlHttp.responseXML;
    xmlDocumentElement = xmlResponse.documnetElement;
    message = xmlDocumentElement.firstChild.data;
    document.getElementById('underInput').innerHTML = message;
    setTimeout('process()', 1000);
}else{
    alert('Something went wrong!');
}   

}

它们在我看来都一样,但只有第一个做了我想要的,而不是第二个继续显示警报消息。

4

3 回答 3

1

在就绪状态为 4 之前为 3。然后

  • 在第一种情况下,外部测试阻止了alert

  • 在第二种情况下,该else子句适用,因此alert被执行。

于 2013-08-06T19:56:06.720 回答
0

假设第一部分是假的。

在这种情况下,then if您永远不会进入该块,因此您将永远不会在第二个 if 语句中看到警报。如果您使用,如果其中一个为假,&&您将进入该块。else

于 2013-08-06T19:59:51.670 回答
0

唯一的区别是,在第一个中,如果readyState不是 4,您将不会看到警报。

如果您将第一个转换为:

function handleServerResponse() {
    if (xmlHttp.readyState == 4) {
        if (xmlHttp.status == 200) {
            xmlResponse = xmlHttp.responseXML;
            xmlDocumentElement = xmlResponse.documentElement;
            message = xmlDocumentElement.firstChild.data;
            document.getElementById('underInput').innerHTML = message;
            setTimeout('process()', 1000);
        } else {
            alert('Something went wrong!');
        }
    } else {
        alert('Something went wrong!'); //added this
    }
}

它们在功能上是一样的。因此,使用第一个,您可以根据需要轻松自定义“出错”的警报。

于 2013-08-06T20:00:03.827 回答