我编写了一个完美的脚本,除了我想添加一个定时循环。我是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中使用它!
答案 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,因为它会使代码更容易编写和维护。