我一直在寻找,我找不到一个干净的解决方案(我可以理解)。
如何从xml列表中随机提取条目?
我的出发点如下(其中提取最新条目):
<script type="text/javascript">
var xmlDoc=null;
if (window.ActiveXObject)
{// code for IE
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
if (xmlDoc!=null)
{
xmlDoc.async=false;xmlDoc.load("/folder/file.xml");
var x=xmlDoc.getElementsByTagName("z:row");
for (i=0;i<1;i++)
{
document.write(x[i].getElementsByTagName("@ows_Title")[0]
.childNodes[0].nodeValue);
}
}
</script>
非常欢迎任何和所有建议!
答案 0 :(得分:2)
Math.random()将返回0到1之间的数字,getElementsByTagName返回一个具有长度的NodeList。因此,
Math.floor(Math.random() * x.length)
为您提供NodeList的随机索引。然后,您可以使用此索引调用item()以从列表中获取该节点:
var nodeList = xmlDoc.getElementsByTagName("whatever");
var node = nodeList.item(Math.floor(Math.random() * nodeList.length));
答案 1 :(得分:0)
稍微改变代码......用“var i = Math.floor((Math.random()* 1000)%x.length”切换“for(i = 0; i&lt; 1; i ++)”; “
<script type="text/javascript">
var xmlDoc=null;
if (window.ActiveXObject)
{// code for IE
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
if (xmlDoc!=null)
{
xmlDoc.async=false;xmlDoc.load("/folder/file.xml");
var x=xmlDoc.getElementsByTagName("z:row");
var i = Math.floor((Math.random()*1000)%x.length);
{
document.write(x[i].getElementsByTagName("@ows_Title")[0]
.childNodes[0].nodeValue);
}
}
</script>
干杯