JQuery:每5秒更改<div>的内容</div>

时间:2011-08-16 17:09:01

标签: javascript jquery html xml xslt

我已经使用xml和xslt建立了一个无线电广播服务器。 我显示当前播放的歌曲,但当然,每分钟都会改变,所以我希望<div>每秒刷新一次,以确保显示的数据是最新的。

我编写了一个JQuery函数,但这不起作用。 另外,我编写了以下测试函数来测试jquery是否正常工作,但它没有。

可能是jquery在XST页面中不起作用吗?

测试功能:

$(document).ready(function () {
        $("a").click(function () {
          alert("test");
            });
        });

单击超链接时不显示警告...

这是我目前的代码:

    <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" >
<xsl:output omit-xml-declaration="no" method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" indent="yes" encoding="UTF-8" />
<xsl:template match = "/icestats" >
<html>
<head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js">
    $(document).ready(function () {
        setInterval(function () {
            $(".newscontent").load("status.xsl");
        }, 1000);
    });
  </script>
  <script type="text/JavaScript">
    window.onload = startTime;
    function startTime()
    {
    var date = new Date();
    var uur = date.getHours();
    var min = date.getMinutes();
    var sec = date.getSeconds();

    if(min == 0 || min == 1 || min == 2 || min == 3 || min ==4 || min == 5 || min == 6 || min == 7 || min == 8 || min == 9)
    {
    min = "0" + min;
    }
    if(sec == 0 || sec == 1 || sec == 2 || sec == 3 || sec ==4 || sec == 5 || sec == 6 || sec == 7 || sec == 8 || sec == 9)
    {
    sec = "0" + sec;
    }

    var movingtime = uur + ":" + min + ":" + sec;
    document.getElementById('clock').innerHTML = movingtime;
    setTimeout('startTime()',500);
    }
  </script>

  <title>Muziekserver</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
<h2>Overzicht</h2>
<br />
<!--index header menu -->
<div class="roundcont">
<div class="roundtop">
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
</div>
<table border="0" width="100%" id="table1" cellspacing="0" cellpadding="4">
    <tr>
        <td bgcolor="#656565">
        <a class="nav" href="admin/">Administratie</a>
        <a class="nav" href="status.xsl">Overzicht van muziek</a></td>
    </tr>
</table>
<div class="roundbottom">
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
</div>
</div>
<br />
<br />
<!--end index header menu -->
<!--mount point stats-->
<xsl:for-each select="source">
<xsl:choose>
<xsl:when test="listeners">
<div class="roundcont">
<div class="roundtop">
<img src="/corner_topleft.jpg" class="corner" style="display: none" />
</div>
<div class="newscontent">
    <div class="streamheader">
        <table cellspacing="0" cellpadding="0">
            <colgroup align="left" />
            <colgroup align="right" width="300" />
            <tr>
                <td><h3>Naam:  <xsl:value-of select="@mount" /></h3></td>
                <xsl:choose>
                    <xsl:when test="authenticator">
                        <td align="right"><a class="auth" href="/auth.xsl">Login</a></td>
                    </xsl:when>
                    <xsl:otherwise>
                        <td align="right"> Speel af als <a href="{@mount}.m3u">M3U</a> of als <a href="{@mount}.xspf">XSPF</a></td>
                    </xsl:otherwise>
                </xsl:choose>
        </tr></table>
    </div>

<table border="0" cellpadding="4" id="info">
<xsl:if test="server_name">
<tr><td>Naam</td><td class="streamdata"> <xsl:value-of select="server_name" /></td></tr>
</xsl:if>
<xsl:if test="server_description">
<tr><td>Beschrijving</td><td class="streamdata"> <xsl:value-of select="server_description" /></td></tr>
</xsl:if>
<xsl:if test="genre">
<tr><td>Genre</td><td class="streamdata"> <xsl:value-of select="genre" /></td></tr>
</xsl:if>
<xsl:if test="bitrate">
<tr><td>Bitrate</td><td class="streamdata"> <xsl:value-of select="bitrate" /> kbps</td></tr>
</xsl:if>
<xsl:if test="quality">
<tr><td>Quality:</td><td class="streamdata"> <xsl:value-of select="quality" /></td></tr>
</xsl:if>
<xsl:if test="video_quality">
<tr><td>Video Quality:</td><td class="streamdata"> <xsl:value-of select="video_quality" /></td></tr>
</xsl:if>
<xsl:if test="frame_size">
<tr><td>Framesize:</td><td class="streamdata"> <xsl:value-of select="frame_size" /></td></tr>
</xsl:if>
<xsl:if test="frame_rate">
<tr><td>Framerate:</td><td class="streamdata"> <xsl:value-of select="frame_rate" /></td></tr>
</xsl:if>
<xsl:if test="server_url">
<tr><td>URL</td><td class="streamdata"> <a target="_blank" href="{server_url}"><xsl:value-of select="server_url" /></a></td></tr>
</xsl:if>
<tr><td>Nu bezig</td><td class="streamdataArtist"> 
<xsl:if test="artist"><xsl:value-of select="artist" /> - </xsl:if><xsl:value-of select="title" /></td></tr>
</table>
</div>
<div class="roundbottom">
<img src="/corner_bottomleft.jpg" class="corner" style="display: none" />
</div>
</div>
<br />
<br />
</xsl:when>
<xsl:otherwise>
<h3><xsl:value-of select="@mount" /> - Not Connected</h3>
</xsl:otherwise>
</xsl:choose>

</xsl:for-each>
<xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;


</body>
</html>
</xsl:template>
</xsl:stylesheet>

3 个答案:

答案 0 :(得分:3)

您需要在文档的<head>中包含对jQuery库的引用。

示例:

<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js" />
...
</head>

在解决Javascript问题时,安装Firebug(适用于Firefox)或使用适用于Chrome的开发人员工具可能很有用。每个都包含一个报告Javascript错误的控制台。在您的情况下,您将看到如下错误:

'$ is not defined'

这意味着jQuery无法正常工作。

<强>更新

为了回应您的更新代码,请注意以下内容不正确:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js">
    $(document).ready(function () {
        setInterval(function () {
            $(".newscontent").load("status.xsl");
        }, 1000);
    });
</script>

应该是:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js" />
<script type="text/javascript">
    $(document).ready(function () {
        setInterval(function () {
            $(".newscontent").load("status.xsl");
        }, 1000);
    });
</script>

第一个<script>元素从src属性中的网址获取其正文。必须使用特定于您网页的Javascript创建第二个<script>元素。

答案 1 :(得分:2)

看起来你忘了包含jQuery库。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script> 

答案 2 :(得分:1)

setInterval()就是你所需要的。

另外,考虑使用jQuery ready方法而不是onLoad,以及对有代码的脚本标记的jQuery标记的引用。