In firefox, you can use 'importNode' function which is introduced in DOM2. But in IE, I suggest you create the elements according to the XML data.
var oAdd=XMLHttpReq.responseXML.getElementsByTagName("tr")[0];改成下面的试试.不懂就查查手册,看看.documentElement的含意 var oAdd=XMLHttpReq.responseXML.documentElement.getElementsByTagName("tr")[0];
if(req.readyState==4 && req.status==200) { var dtable=document.getElementById('tshow'); var nl = req.responseXML.getElementsByTagName( 'book' ); for( var i = 0; i < nl.length; i++ ) { var nli=nl.item(i); var eauthor=nli.getElementsByTagName('author'); var author=eauthor.item(0).firstChild.nodeValue; var etitle=nli.getElementsByTagName('title'); var title=etitle.item(0).firstChild.nodeValue;
var elTr = dtable.insertRow( -1 ); var elAuthorTd = elTr.insertCell( -1 ); elAuthorTd.innerHTML = author; var elTitleTd = elTr.insertCell( -1 ); elTitleTd.innerHTML = title; } }
下面是XML
------------------------
<?xml version='1.0' encoding='UTF-8'?>
<table>
<tr id='OA12345'>
<td><div align='center'>
<img src='image/read.png' align='absmiddle' style='cursor:hand'/>
</div></td>
<td><div align='center'>
<img src='image/oano.png' width='18' height='18' align='absmiddle'/>
</div></td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum</td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum</td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum</td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum</td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum</td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum</td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum</td>
<td style='overflow:hidden; text-overflow:ellipsis;'>aaa</td>
</tr>
</table>
都可以正确的得到接点的名称呀
var oAdd=XMLHttpReq.responseXML.documentElement.getElementsByTagName("tr")[0];
{
var dtable=document.getElementById('tshow'); var nl = req.responseXML.getElementsByTagName( 'book' );
for( var i = 0; i < nl.length; i++ )
{
var nli=nl.item(i);
var eauthor=nli.getElementsByTagName('author');
var author=eauthor.item(0).firstChild.nodeValue;
var etitle=nli.getElementsByTagName('title');
var title=etitle.item(0).firstChild.nodeValue;
var elTr = dtable.insertRow( -1 );
var elAuthorTd = elTr.insertCell( -1 );
elAuthorTd.innerHTML = author;
var elTitleTd = elTr.insertCell( -1 );
elTitleTd.innerHTML = title;
}
}
oRes.appendChild(oAdd); 不能这样来添加,而且在ie下对table使用appendChild时,是在tbody标签中才有用,table.appendChild可以加入行,但不显示,而且返回的节点并不是table的tr,你oRes.appendChild(oAdd); 会出错<?xml version='1.0' encoding='UTF-8'?>
<table>
<tr id='OA12345'>
<td> <div align='center'>
<img src='image/read.png' align='absmiddle' style='cursor:hand'/>
</div> </td>
<td> <div align='center'>
<img src='image/oano.png' width='18' height='18' align='absmiddle'/>
</div> </td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
<td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
<td style='overflow:hidden; text-overflow:ellipsis;'>aaa </td>
</tr>
</table> function processResponse() {
if (XMLHttpReq.readyState == 4) { // 判断对象状态
if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
AddRow(XMLHttpReq.responseXML);//===========调用函数
} else { //页面不正常
window.alert("您所请求的页面有异常。");
}
}
}
function AddRow(dom)
{
var tb=document.getElementById("表的id");
var tr=tb.insertRow(tb.rows.length);
var XMLTR=dom.getElementsByTagName("tr")[0];
tr.id=XMLTR.getAttribute("id");//设置id
var XMLTD=XMLTR.getElementsByTagName("td");
var td;
for(var i=0;i<XMLTD.length;i++)
{
td=tr.insertCell(i);
td.innerHTML=XMLTD[i].firstChild.nodeValue;
}
}
---------------------------------------------------------------
<?xml version='1.0' encoding='UTF-8'?>
<table>
<tr id='OA12345'>
<td><![CDATA[<div align='center'><img src='image/read.png' align='absmiddle' style='cursor:hand'/></div>]]</td>
<td><![CDATA[<div align='center'><img src='image/read.png' align='absmiddle' style='cursor:hand'/></div>]]</td>
<td><![CDATA[OANum]]</td>
<td><![CDATA[OANum]]</td>
<td><![CDATA[OANum]]</td>
<td><![CDATA[OANum]]</td>
<td><![CDATA[OANum]]</td>
<td><![CDATA[OANum]]</td>
<td><![CDATA[OANum]]</td>
<td><![CDATA[aaa]]</td>
</tr>
</table>
<table>
<tr id='OA12345'>
<td> <![CDATA[ <div align='center'> <img src='image/read.png' align='absmiddle' style='cursor:hand'/> </div>]]> </td>
<td> <![CDATA[ <div align='center'> <img src='image/read.png' align='absmiddle' style='cursor:hand'/> </div>]]></td>
<td> <![CDATA[OANum]]> </td>
<td> <![CDATA[OANum]]> </td>
<td> <![CDATA[OANum]]></td>
<td> <![CDATA[OANum]]></td>
<td> <![CDATA[OANum]]></td>
<td> <![CDATA[OANum]]></td>
<td> <![CDATA[OANum]]></td>
<td> <![CDATA[aaa]]></td>
</tr>
</table>
并且不需要再td.innerHTML=XMLTD[i].firstChild.firstChild.nodeValue
可以td.innerHTML=XMLTD[i].firstChild.nodeValue,<![CDATA[]]>会自动去掉的
要在HTML中插入XML文档的节点是不是一定要用XSLT来进行转换了以后才可以呀?
XSLT是直接将xml文档解释为html标签,而不是插入了,插入是js来做的