我正在尝试创建一个脚本,它将根据我所希望的XML文件的信息生成div。问题是我的脚本根本不起作用。我所做的就是在w3schools.org上找到代码并对其进行了一些修改,以匹配我希望它做的事情。Javascript未能生成包含XML信息的div。 (xml初学者)
结果:
<script type="text/javascript">
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("GET","products.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var size=0;
var i=0;
var x=xmlDoc.getElementsByTagName("honey");
var y=x.length;
var final=null;
function gethoney()
{
for (i < y)
{
a1='<div style="height:200px;width:300px;float:left;background-color:#FFF5CC;opacity:0.7;text-align:center;">';
a2='<p><b>';
a3=(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
a4='<br>';
a5=(x[i].getElementsByTagName("price")[0].childNodes[0].nodeValue);
a6='</br></b></p>';
a8='</div>';
a9='<div style="height:200px;width:20px;float:left;"></div>';
a10='<div style="height:200px;width:100px;float:left;">';
a11=(x[i].getElementsByTagName("image")[0].childNodes[0].nodeValue);
a12='</div>';
final=final + a1 + a2 + a3 + a4 + a5 + a6 + a8 + a9 + a10 + a11 + a12;
size=size+300;
i=i+1;
}
document.getElementById("mainbody").style.height=size;
size=size-20;
document.getElementById("products").style.height=size;
document.getElementById("products").innerHTML=final;
}
</script>
为了节省每一个DIV使用最终似乎并不喜欢我的理想方式,但我就是这么做的。
和XML是这样的:
<?xml version="1.0" encoding="windows-1252"?>
<honey>
<name>one</name>
<price>3</price>
<image><img src=""></img></image>
<disc>This is a honey</disc>
</honey>
<honey>
<name>one</name>
<price>3</price>
<image><img src=""></img></image>
<disc>This is a honey</disc>
</honey>
etc etc
我试图找到这个,但没有任何运气信息。任何人都可以指出我做错了什么,并建议改进/更正?另外,如果有人可以写下生成div的方法,而不使用最后的来保存它们,然后再使用innerHTML,那么将不胜感激。
您的XML文件是无效的:它只能包含1根标记。将1个标签内的''标签包裹起来。 –
ZippyV
不添加1根标签是我的一个巨大的错误,我已经修复,但并没有完全解决所有问题。 – Rinera