请,需要帮助循环javascript事件

时间:2012-07-16 03:12:04

标签: javascript html xml loops javascript-events

我编写了一个完美的脚本,除了我想添加一个定时循环。我是javascript的新手,现在已经把我的头脑砸了几天,我希望专家可以帮助我....

此外,我只需要在FireFox中使用它!

此脚本从XML中提取数据。如果在XML中找不到任何内容,则页面将正常显示。如果找到了某些内容,则会创建一个弹出窗口,显示找到的信息并播放音频文件。

如果通过调用外部css样式表在XML集中找不到任何内容,则弹出窗口只是一个可见性设置为隐藏的div。如果找到了某些内容,则它会引用单独的样式表并播放和音频文件,并将div设置更改为true。

我需要以某种方式添加循环,以便此脚本每20-30秒检查一次XML文件,如果找到了某些内容,它将显示我隐藏的DIV并播放音频警报。这个脚本是完全正常的,除了我无法在不重新加载页面的情况下循环脚本。

我也希望将其保留在标签中。

    <head>
    <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","xml/SearchRequest-11988N.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;

    xtotaltickets=xmlDoc.getElementsByTagName("issue")[0].getAttributeNode("total");
    totaltickets=xtotaltickets.nodeValue;
    ytotaltickets=parseInt(totaltickets);

    if (ytotaltickets<1)
    {
    document.write("<link rel='stylesheet' type='text/css' href='notickets.css'>");
    }
    else
    {
      document.write("<link rel='stylesheet' type='text/css' href='newtickets.css'>");
      var audioElement = document.createElement('audio');
      audioElement.setAttribute('src', 'newticket.ogg');
      audioElement.play();
    }

    </script>

提前感谢您的帮助!同样,我只需要在FireFox中使用它!

1 个答案:

答案 0 :(得分:2)

将代码放入函数中并使用间隔:

<head>
<script type="text/javascript">

function refreshXml() {

    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","xml/SearchRequest-11988N.xml",false);
    xmlhttp.send();
    xmlDoc=xmlhttp.responseXML;

    xtotaltickets=xmlDoc.getElementsByTagName("issue")[0].getAttributeNode("total");
    totaltickets=xtotaltickets.nodeValue;
    ytotaltickets=parseInt(totaltickets);

    if (ytotaltickets<1)
    {
    document.write("<link rel='stylesheet' type='text/css' href='notickets.css'>");
    }
    else
    {
      document.write("<link rel='stylesheet' type='text/css' href='newtickets.css'>");
      var audioElement = document.createElement('audio');
      audioElement.setAttribute('src', 'newticket.ogg');
      audioElement.play();
    }
}

setInterval(refreshXml, 20000);

</script>

您需要检查的其他一些事项:

  • 确保可以多次调用该函数,而不会创建重复的内容。特别是,在创建之前,您应该检查所需的元素是否已经存在。

  • 要确保代码在正确的时间运行,您可能希望收听正文onload事件。还要考虑使用jQuery,因为它会使代码更容易编写和维护。