我在尝试获取id并从xml中放置值时收到错误...问题仅在于html ...而不是在xml部分,因为在使用alert时我们得到了xml值...认为DOM元素没有完全加载..也帮我在哪里调用函数,以便成功加载所有DOM元素..
提前致谢..
<html>
<head>
<script type="text/javascript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
var a;
function loadXML(xmlFile)
{
xmlDoc.async="false";
xmlDoc.onreadystatechange=verify;
xmlDoc.load(xmlFile);
xmlObj=xmlDoc.documentElement;
a=xmlObj;
document.getElementById("to").innerHTML=a.childNodes(0).text;
document.getElementById("from").innerHTML=a.childNodes(1).text;
document.getElementById("message").innerHTML=a.childNodes(2).text;
document.getElementById("body").innerHTML=a.childNodes(3).text;
}
loadXML('note.xml');
function verify()
{
if (xmlDoc.readyState != 4)
{
return false;
}
}
</script>
</head>
<body>
<h1>W3Schools Internal Note</h1>
<div id="div1">
<b>To:</b> <span id="to" name="to" >aba</span><br />
<b>From:</b> <span id="from" name="from">abar</span><br />
<b>Message:</b> <span id="message" name="message">avfdas</span><br />
<b>Body:</b> <span id="body" name="body">hgj</span>
</div>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to> Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body1>Don't forget me this weekend!</body1>
</note>
答案 0 :(得分:0)
您正在考虑正确的思路,但您需要了解只有在xml文档完全加载后才能尝试访问xmldocument的节点。
当加载xmldoc时(因为它是异步发生的),无论你设置为onreadystatechange的函数是什么,都会被调用。当readyState为4时,表示文档已加载,之后您应该尝试访问文档的元素。
此外,您的代码仅适用于IE,因为它是唯一支持ActiveXObjects的浏览器。对于跨浏览器解决方案,请执行以下操作:(取自http://msdn.microsoft.com/en-us/library/ie/ms535874(v=vs.85).aspx)
function getXMLHttpRequest()
{
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
}
else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
catch(ex) {
return null;
}
}
}
function handler()
{
if (oReq.readyState == 4 /* complete */) {
if (oReq.status == 200) {
console.log(oReq.responseText); // You should try accessing the DOM here.
}
}
}
var oReq = getXMLHttpRequest();
if (oReq != null) {
oReq.open("GET", "http://localhost/test.xml", true);
oReq.onreadystatechange = handler;
oReq.send();
}
else {
window.console.log("AJAX (XMLHTTP) not supported.");
}