function mm(path)
{
    var e; if(e=document.getElementById("meizz")) e.parentNode.removeChild(e);
    var script= document.createElement("SCRIPT"); script.defer = true;
    script.type="text/javascript"; script.src=path; script.id="meizz";
    document.getElementsByTagName("HEAD")[0].appendChild(script);
}
setInterval("mm('/scripts/abc.asp')", 10000); //10秒运行一次

解决方案 »

  1.   

    先谢谢梅大侠。还有一个问题,我有这样一段代码,总是提示最后那行错误。
    document.writeln("<div id='ShowTime'></div>")
    var nowDate = new Date();
    var ShowTime = document.getElementByID("ShowTime");
    ShowTime.text = nowDate.toTimeString();
      

  2.   

    第一没见过div有text属性(try innerTEXT)第二没见过toTimeString(try toString)或许我太孤陋寡闻了
      

  3.   

    我只是想让ShowTime显示出一段字符串,来验证上面的代码是否刷新了。
      

  4.   

    DIV在DHTML里确实没有text属性,不过 xxuu503 也说错了一点,innerText (大小写问题)
    用 innerHTML 也行呀
    至于时间对象的 toTimeString() 是确实有这个方法的,xxuu503 兄弟要查查资料了
      

  5.   

    用了innerHTML方法也不行,还是提示“对象不支持此属性或方法”
      

  6.   

    document.getElementByID
    ==>
    document.getElementById  注意大小写呀,兄弟
      

  7.   

    哭了,又提示“'ShowTime' 为空或不是对象”
    怎么回事。
      

  8.   

    <body><SCRIPT LANGUAGE="JavaScript">
    <!--
    document.writeln("<div id='ShowTime'></div>");
    var nowDate = new Date();
    var ShowTime = document.getElementById("ShowTime");
    ShowTime.innerHTML = nowDate.toTimeString();
    //-->
    </SCRIPT>
      

  9.   

    谢谢老大再次帮忙,你给的代码单独放到一个HTML文件中,没错,可我把
    document.writeln("<div id='ShowTime'></div>");
    var nowDate = new Date();
    var ShowTime = document.getElementById("ShowTime");
    ShowTime.innerHTML = nowDate.toTimeString();
    这些代码放到js1.js文件中,再按照你给的下面的代码进行测试就出错了。提示就是“'ShowTime' 为空或不是对象”function mm(path)
    {
        var e; if(e=document.getElementById("meizz")) e.parentNode.removeChild(e);
        var script= document.createElement("SCRIPT"); script.defer = true;
        script.type="text/javascript"; script.src=path; script.id="meizz";
        document.getElementsByTagName("HEAD")[0].appendChild(script);
    }
    setInterval("mm('js1.js')", 10000); //10秒运行一次
    怎么回事呀。
      

  10.   

    问题出在 document.writeln() 上,这个 writeln 和 write 不要乱用,要慎用,因为用不当的话它会覆盖原已经加载的HTML,不过你的问题不是在这里,你看到我给你的例子里<script>里加了一个<body>没有?没有这个标签,单单一个脚本不能构成一个标准的HTML网页,会造成 document 这个对象没被创建,因此也会报错。至于document.write这个方法我一般都会使用insertAdjacentHTML或者insertBefore或者appendChild或者innerHTML之类的方法,绝少使用.write()
      

  11.   

    谢谢老大指点,那我要实现上面的方法,在js1.js文件中应该怎么写!
      

  12.   

    刚才那段代码我先在要调用的页面里加入了一个<div id="ShowTime"></div>就行了。
    然后测试老大给的代码,证明了每隔10秒是刷新了,因为时间变了:)现在我在“setInterval("mm('js1.js')", 10000); ”里将js1.js文件替换成我要生成js代码的页面,就是WebForm1.aspx。其中WebForm1.aspx.cs中Page_Load方法中我这么写的: string js = "";
    js = js + "function showTime()\n";
    js = js + "{\n";
    js = js + "var dateNow = new Date();\n";
    js = js + "ShowTime.innerHTML += \""+DateTime.Now.ToString()+"\";\n";
    js = js + "}\n";
    js = js + "showTime();\n";
    Response.Write(js);
    Response.End();打开页面浏览,同样每隔10秒钟将时间显示了来了,但是这个时间没有刷新,都是第一次显示的时间。这又是为什么呀。
      

  13.   

    不让我回复了。
    用马甲试试
    刚才又试了asp输出的js,asp的代码如下。
    <%
    response.write"function showTime()"&CHR(10)
    response.write"{"&CHR(10)
    response.write"ShowTime.innerHTML +="""&now()&""";"&CHR(10)
    response.write"}"&CHR(10)
    response.write"showTime();"&CHR(10)
    %>测试后还是同asp.net输出js代码一样,显示没有问题,就是时间不刷新。
    我想是不是上面那段代码只是把js 加载进来,但并没有在10秒钟再次重新加载呀。另外还有一个问题就是Meizz写的代码中是在<Head>标记中再加入一个script。那么每隔10秒钟加入一个script,就加载了一段js,是不是停留时间长了之后,那网页里就有很多个<script>了。需不需要到10秒钟后先清空前一个,然后再加载。我的上面的问题也是由于<script>过多没清空造成的啊。
    在直接引用js文件时,那希js输出当前时间。过10秒钟后再刷新,再引用一次js文件,但第一次引用的js并未清空,所以它还继续显示,但由于是使用js方法显示的时间,所以表面看来是每隔10秒显示一次。但引用aspx或asp文件生成的js文件时,这段js要显示的时间是由aspx或asp输出的时间,相对js文件就是静态的了。过10秒钟后虽然是再次引用了,但前一次引用的js未清空,所以还是显示第一次引用的js,就是那段静态的时间。所以不管在这个页面停留多长时间,它都只显示第一次加载时的时间。不知道我这么理解的对不对。还请meizz老大指点。谢谢。
      

  14.   

    “另外还有一个问题就是Meizz写的代码中是在<Head>标记中再加入一个script。那么每隔10秒钟加入一个script,就加载了一段js,是不是停留时间长了之后,那网页里就有很多个<script>了。需不需要到10秒钟后先清空前一个,然后再加载。”我的代码里不是有 var e; if(e=document.getElementById("meizz")) e.parentNode.removeChild(e); 这么一句代码吗?这不就是清除老的JS标签的吗??
      

  15.   

    遇到老大可不容易。上午刚看完老大讨论FF与IE的好坏,下午就遇到了。借这个机会。就再问老大一个问题。目前做的项目里用到了.Net写的WebService。需要在客户端使用JS来调用。其中JS代码,是由aspx页面生成的,需要根据不同情况调用不同的WebService,并且要间隔一段时间再次调用WebService,但测试的时候才发现JS调用远程的WebService需要启用IE里的“通过远程访问数据资”的选项,这就出问题了,我不可能要求每一个用户或浏览都去更改IE的设置。所以才想到这个方法。在服务器端调用WebService并把结果返回给js代码,客户站只需要每过一段时间再次调用aspx生成的js代码,就能达到目的。但又出现了本贴的问题。我想问老大的就是,就是还采用JS调用WebService,如何避免上面的问题或是还有没有其它的解决办法。这个问题都困扰我一周的时间了。刚开始没发现问题,现在发现问题了又想不出好的解决办法。真是愁人啊,老大再帮帮忙!谢谢了。
      

  16.   

    通过JS调用web service一般都是通过 xmlhttp发送XML信息到web service再从得到的返回值分析结果,不过现在的IE已经禁止xmlhttp跨域访问,即向本站点之外的web service请求的时候就会出现这种问题,所以这种问题你可以在服务器端先去调用web service,然后再将结果回传到客户端,你的问题可能是出在缓存上,因为每次请求的JS路径等信息都是相同的,客户端浏览器就会缓存,从而得不到新的数据,不过这也是有解决办法的,你看看CSDN的每个贴子XML后面都挂了一个 temp=..... 这个就是为了避免客户端缓存而做的,你也可以采用:function mm()
    {
        var e; if(e=document.getElementById("meizz")) e.parentNode.removeChild(e);
        var script= document.createElement("SCRIPT"); script.defer = true;
        script.type="text/javascript"; script.id="meizz";
        script.src = "/scripts/abc.asp?temp="+ Math.random();  //看这里
        document.getElementsByTagName("HEAD")[0].appendChild(script);
    }
    setInterval("mm()", 10000); //10秒运行一次
      

  17.   

    谢谢老大指点,那abc.asp页面还需要对该参数进行操作吗。
      

  18.   

    meizz(梅花雪) ,你是不是每几分钟就刷一次呀