请,需要帮助循环Javascript事件

Please, need help looping a Javascript event

本文关键字:循环 Javascript 事件 帮助      更新时间:2023-10-25

我写了一个脚本,除了希望添加一个定时循环之外,它运行得很好。我是Javascript的新手,几天来我一直在思考这个问题,我希望一位专家能帮助我…

此外,我只需要这个在FireFox工作!

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

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

我需要以某种方式添加一个循环,以便该脚本每20-30秒检查一次XML文件,如果发现了什么,它将显示我隐藏的DIV并播放音频警报。这个脚本功能齐全,只是我无法在不重新加载页面的情况下使脚本循环。

我想把它也保留在<head>标签中。

    <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中工作!

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

<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,因为它将使代码更易于编写和维护。