显示xml列表中的随机项

时间:2010-10-13 11:29:29

标签: javascript xml random

我一直在寻找,我找不到一个干净的解决方案(我可以理解)。

如何从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>

非常欢迎任何和所有建议!

2 个答案:

答案 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>

干杯