代码之家  ›  专栏  ›  技术社区  ›  esqew

为什么我的脚本不能像预期的那样动态更新我的DIV?

  •  1
  • esqew  · 技术社区  · 14 年前
    <html>
    <head>
    <style type="text/css">
        body {
            background-color: #000000;
            font-family: Arial, Helvetica, sans-serif;
            font-size: 20px;
            text-align: center;
            color: #FFFFFF;
        }
    </style>
    <script type="text/javascript" src="jquery-1.4.js"></script>
    <script type="text/javascript">
    function sleep(ms)
    {
        var dt = new Date();
        dt.setTime(dt.getTime() + ms);
        while (new Date().getTime() < dt.getTime());
    }
    function update() {
        while (0 < 1) {<?php $contents = file_get_contents("my url here"); 
        ?>
            var count = <?php echo $contents ?>;
            document.getElementById('div').innerHTML = count;
            sleep(1500);
        }
    }
    </script>
    </head>
    <body onload=update()>
    <iframe id="iframe" src="my url" style="visibility: hidden;"/>
    <table width=100% height=100%>
    <tr height=80%>
    <td width=100%>
    <center>
    <div id="div"></div>
    </center>
    </td>
    </tr>
    </table>
    </body>
    </html>
    

    在浏览器中查看源代码时, var 设置正确,但不会设置 div . 我确信php脚本指向的URL是准确的,并且只包含一个脚本,用于从外部页面对数字进行grep。

    事先谢谢!

    3 回复  |  直到 14 年前
        1
  •  1
  •   deceze    14 年前

    假设 file_get_contents("my url here") 产量 42 (例如),您知道您正在创建一个无限循环,该循环将设置 #div 四十二 每1.5秒一次又一次?即。, var count 永远,永远 四十二 不会改变,因为只评估PHP 一旦 在服务器上。

    此外,我怀疑 sleep 函数可能会造成一些问题,因为它会创建另一个紧循环。如果这个脚本只是简单地阻止了浏览器而没有更新任何东西,我不会感到惊讶,因为它陷入了一个无限循环。在javascript中延迟执行的方法是使用 window.setTimeout window.setInterval .

    我猜你要找的是某种Ajax解决方案,如果你想告诉我们你想做什么的话。既然您包含了jquery(实际上不使用它),那么您应该看看 jQuery.get() ,再加上 setInterval 更新 div 定期地。

    类似:

    window.setInterval(function () {
        $.get("my url here", function (data) {
            $('#div').html(data);
        });
    }, 1500);
    
        2
  •  2
  •   DGM    14 年前

    为了回答这个问题,为什么它不能运行…你的 onload 需求引文:

    <body onload="update()">
    

    但是其他人已经用jquery发布了更好的方法。

        3
  •  0
  •   Charles Ray    14 年前
    var count = <?php echo $contents ?>;
    document.getElementById('div').innerHTML = count;
    

    您正在通过PHP向Web服务器请求变量$contents,除非重新加载页面,否则该变量始终是一个静态数字。尝试使用jquery,如上所述。