是什么导致IE7错误?

I am using this JS code to reach a list of cities. It works in fireworks, chrome .e.t.c. But in ie7 it does not. the line document.getElementById(oDiv).innerHTML=xmlhttp.responseText; causes the error.

When I change "responseText" to "readyState", "statusText", "readyState" the scripts works. Only "responseText" causes problem.

What is the problem here?

function showAjax(oDiv, countrycode, dowhat) {
    if (oDiv == "") {
        document.getElementById(oDiv).innerHTML = "";
        return;
    }
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open('POST', 'ajax.php?dowhat=' + dowhat + '&countrycode=' + countrycode, true);
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById(oDiv).innerHTML = xmlhttp.responseText;
            //document.getElementById(oDiv).innerHTML=xmlhttp.readyState;
        }
    }
    xmlhttp.send();
}

<a href='#' onclick="showAjax('citytd','$countrycode','listcities')">Click</a> <div id=citytd></div>

IE7 (and before, and IE8 in "compatibility" mode) has issues with getElementById, where it considers some things IDs that it shouldn't. I suspect you have a global variable, or another element with name="citytd", and IE is pick that up instead (even though, again, it shouldn't). More: ...by any other name, would smell as sweet