xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<acc>
<user>zhangsan</user>
<psd>123456</psd>
</acc>
<acc>
<user>lisi</user>
<psd>654321</psd>
</acc>
</urlset>
js代码如下:
function showHint(str) {
"user static";
var xmlhttp = new XMLHttpRequest();
var psd_text = document.getElementById("psd_text");
if (str.length == 0) {
psd_text.innerHTML = "";
return;
}
xmlhttp.open("GET", "acc.xml", true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
var acc_node = xmlhttp.responseXML.documentElement.getElementsByTagName("user");
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
for(var i = 0; i < acc_node.length; i++){
if(acc_node[i].firstChild.nodeValue.indexOf(str)){
psd_text.innerHTML = acc_node[i].lastChild.nodeValue;
}
}
}
}
}
html代码如下:
<body>
<h3>请在下面的输入框中输入用户名:</h3>
<form>
<label>用户名:</label><input type="text" id="user_input" value="" onkeyup="showHint(this.value)" />
</form>
<p>密码:<span id="psd_text"></span></p>
</body>
在w3school学习到一个例子,就想改一下成输入用户名,然后在xml文件里查找包含这个用户名的节点,最后显示密码。
谷歌浏览器中总是报错:Cannot read property 'documentElement' of null。
而火狐报错:xmlhttp.responseXML is null。
搞了很久搞不定,上来求帮忙。
伊谢尔伦2017-05-19 10:21:04
你代码中报错的应该是这一句:
var acc_node = xmlhttp.responseXML.documentElement.getElementsByTagName("user");
XMLHttpRequest.responseXML 属性是一个只读值,它返回一个包含请求检索的HTML或XML的Document,如果请求未成功,尚未发送,或者检索的数据无法正确解析为 XML 或 HTML,则为 null。来源
按照上面说的,此时请求未成功,所以 xmlhttp.responseXML 是 null,所以会报错。你试试把这句代码写在判断 ajax 状态的 if 语句里面。