我从教程中复制了以下代码,但仍然无法弄清楚我是否在某处犯了错误或是否与浏览器支持有关。在此先感谢您向我发出了什么事情!
<html>
<head>
<script type="text/javascript">
function loadXMLDoc(dname)
{
if(window.XMLHttpRequest)
{
xhttp = new XMLHttpRequest();
}
else
{
xttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET", dname, false);
xhttp.send();
return xhttp.responseXML;
}
function change(text)
{
var xmlDoc = loadXMLDoc("dom.xml");
var x = xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue = text;
var y = xmlDoc.getElementsByTagName("title");
for(i=0; i<y.length; i++)
{
document.write(y[i].childNodes[0].nodeValue+"<br />");
}
}
function remove(node)
{
xmlDoc = loadXMLDoc("dom.xml");
var y = xmlDoc.getElementsByTagName(node)[0];
xmlDoc.documentElement.removeChild(y);
alert("The element "+node+" has been removed!");
}
function prove(u)
{
var x = xmlDoc.getElementsByTagName(u);
for (i=0; i<x.length; i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("<br />");
}
</script>
</head>
<body>
<input type="button" value="remove" onclick="remove('book')" />
<input type="button" value="prove it" onclick="prove('book')" />
</body>
</html>
------------更新-------------------------
这是一个可能有用的XML文件:
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="cooking">
<title lang="en">Book 2</title>
<author>Giada</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="cooking">
<title lang="en">Book 3</title>
<author>Giada</author>
<year>2005</year>
<price>30.00</price>
</book>
</bookstore>
答案 0 :(得分:1)
我认为问题可能是因为document.write
在页面加载完成后运行的任何document.write语句 将创建一个新页面并覆盖当前的所有内容 页。
在}
证明函数声明
for
尝试在innerHTML
或某个html元素上使用div
来解决此问题。
除此之外,我发现您的代码没有任何问题
答案 1 :(得分:0)
该脚本正在查找名为“dom.xml”的文件
如果您将该文件放在与上一页相同的目录中,您将得到不同的结果。
答案 2 :(得分:0)
看起来你错过了最后一个函数证明或for循环的括号。
您也可以申报
var xmlDoc = loadXMLDoc("dom.xml");
在每个函数之外,或将其添加到prove()