0

有没有办法使用下面的代码来代替刷新时间来刷新已经存在的 div id?

  <script type="text/javascript">
window.onload = startInterval;
function startInterval()
{
    setInterval("startTime();",1000);
}

function startTime()
{
    document.getElementById('drawaddrow').innerHTML = ????;  
}
</script>

假设我要用我想刷新的 id 替换时间 id 我会在 .innerHTML =???

这是我需要每秒刷新的 div。

<div id="draw" align="center">
<table>

    <tr><td style="height:20px;"></td></tr>

</table>


        <TABLE style="float:center;border:5px; border-style:outset;border-color:#E80000; width:850px; border-spacing:0; border-collapes:collapse;" table border="1">
            <div id="addrow"><script type="text/javascript">
            Draw ("")
            [Add]</script></div>
        </table>

</div>

[AddItemsHTML] 以某种方式从一个软件中提取数据,告诉您什么是到期的,什么不是,但是该脚本不是每秒拉一次时间,浏览器在刷新时只是更改了到期状态列上的时间。

现在我用它来刷新整个页面我只需要刷新drawaddrow div id。

    function refreshPage () {
     var page_y = document.getElementsByTagName("body")[0].scrollTop; 
     window.location.href = window.location.href.split('?')[0] + '?page_y=' + page_y;

}
     window.onload = function () {
         setTimeout(refreshPage, 1000);
            if (window.location.href.indexOf('page_y') != -1 ) {
                var match = window.location.href.split('?')[1].split("&")[0].split("=");
                document.getElementsByTagName("body")[0].scrollTop = match[1];

            }
4

7 回答 7

2

更新(在 27/07/2013 @08:20 AM IST):

浏览了您的代码后,以下是我的更新答案。

  1. divaddrow由于以下原因,使用 ( )为 DIV ( ) 赋值是.innerHTML行不通的:
    (a) DIV 有一些代码包含在方括号内(如[AddItemsHTML])。我不确定它使用什么技术。但是从它的预期用途来看(即用数据填充表),它似乎确实需要与服务器通信来获取数据。
    (b) DIV 也有<script>一个调用函数的标签(我们称之为cntFn)。简单地分配值是行不通的,因为值设置不会再次调用/执行该函数(就像它在页面加载时所做的那样)。
  2. 假设点 1.a 是错误的,处理 1.b 的正常方法是首先使用分配 div 的静态内容,.innerHTML然后执行(a)将“cntFn”所做的任何事情写入刷新页面的函数中(我们称之为refreshFn)也(或)(b)在“refreshFn”中调用“cntFn”。后者在这里也会引起问题,因为“cntFn”有很多document.write行会重新绘制整个页面(这意味着页面的其他内容会在执行刷新时丢失)。
  3. 通常使用document.write线条是一种不好的做法,因为它们会完全重新绘制页面。您可以在此处找到更多相关信息。
  4. 我认为最好的替代方法是使用 AJAX 来刷新内容。您的divaddrowdiv 的内容将形成 AJAX 文件的内容,该文件需要每 'x' 秒调用一次。小心“x”秒部分。不要尝试每秒刷新该部分,因为实际上 AJAX 请求到达服务器并获得响应需要时间。设置刷新间隔,以便在下一个请求到来时处理第一个请求(至少 90% 的情况)。AJAX 调用将获取的数据量(行数)也将是一个因素。
于 2013-07-26T08:09:18.317 回答
1

这是一个基于原始帖子的 JavaScript 片段,它计算页面加载后的秒数,假设有一个 ID 为“时间”的元素和内容完全是数字。

如果剩余时间在您正在使用的页面上以秒为单位给出,那么相应地调整它会很容易。如果剩余时间不是以秒为单位,我需要查看相关文本的实际外观。

window.onload = startInterval;
var firstTime;
var valAtPageLoad; 
function startInterval()
{
    firstTime = new Date();
    valAtPageLoad = parseInt(document.getElementById('time').innerHTML);
    setInterval("startTime();",1000);
}

function startTime()
{
    var timeDiff = (new Date() - firstTime)/1000;
    document.getElementById('time').innerHTML = Math.round(timeDiff + valAtPageLoad);  
}
于 2013-07-26T08:20:46.447 回答
1

我不确定我是否理解你,但这是想要你的意思吗?

function startTime()
{
    document.getElementById('time').innerHTML = document.getElementById('target').innerHTML;  
}
于 2013-07-26T08:02:45.863 回答
1

看看这个......我用Jquery做同样的事情

 $(document).ready(
            function() {
                setInterval(function() {
                    var randomnumber = Math.floor(Math.random() * 100);
                    $('#show').text(
                            'I am getting refreshed every 3 seconds..! Random Number ==> '
                                    + randomnumber);
                }, 3000);
            });

工作小提琴

于 2013-07-26T07:54:44.943 回答
1

如果我正确理解了您的问题,您可以执行以下操作:

window.onload = function () {    
    function startTime () {
        document.getElementById('date').innerHTML = new Date();
    }
    setInterval(startTime, 1000);
}

HTML:

<div id="time">This a div containing time: <span id="date"></span></div>
于 2013-07-26T07:56:59.630 回答
1

这就是我使用的:

<span>This page will refresh in </span><span id="countdown">60</span>seconds&hellip;
<script type="text/javascript">
setInterval(
function() { 
    if (document.getElementById('countdown').innerHTML != 0) {
        document.getElementById('countdown').innerHTML--; 
    } else {
        window.location = window.location;
    }
}, 1000);</script>
于 2013-07-26T08:11:43.577 回答
0

如果要重新加载 DIV 而不是整个页面,则必须在服务器端创建该 DIV 的内容,然后使用 AJAX 加载 DIV 的内容。最简单的方法是使用 jQuery:

function startTime() {
  $.get('path/to/div/contents.html', function(data) {
    $('#drawaddrow').html(data);
  });
}
于 2013-07-26T08:37:29.337 回答