yangmingge 2013-10-26 23:42 采纳率: 0%
浏览 470
已采纳

JS倒计时 使用setInterval调用对象自身方法报 Maximum call stack size exceeded问题

使用JavaScript写的倒计时,使用setInterval调用对象自身方法报 Maximum call stack size exceeded问题
[code="javaScript"]<!doctype html>



Title



00 00 00

00 00 00

<br> function CounterDown(id,endtime){<br> this.id=id;<br> this.endtime=new Date(endtime).getTime();<br> this._countTime();<br> }<br> CounterDown.prototype={<br> _countTime:function(){<br> var timmer;<br> var now =new Date().getTime(); <br> now = now+1000;<br> var teamTimeId = this.id,<br> endtime = this.endtime,<br> lasttime = (parseInt(endtime)-parseInt(now)) / 1000,<br> days = Math.floor(lasttime / (24 * 3600)),<br> lastSec = (lasttime - days * 24 * 3600),<br> hours = Math.floor(lastSec/3600),<br> minutes = Math.floor((lastSec - hours * 3600)/60),<br> seconds = Math.floor(lastSec - (hours * 3600) - (minutes * 60));</p> <pre><code> if(lasttime &lt;= 0){ clearInterval(timmer); $(&#39;#&#39;+teamTimeId).html(&quot;&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;天&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;时&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;分&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;秒&quot;); }else{ day_0=parseInt(days/10); day_1=parseInt(days%10); hours_0=parseInt(hours/10); hours_1=parseInt(hours%10); minutes_0=parseInt(minutes/10); minutes_1=parseInt(minutes%10); seconds_0=parseInt(seconds/10); seconds_1=parseInt(seconds%10); var timerhtml = &quot;&quot;; timerhtml += &quot;&lt;span&gt;&lt;b&gt;&quot; + day_0+&quot;&lt;/b&gt;&lt;b&gt;&quot;+day_1 + &quot;&lt;/b&gt;&lt;/span&gt;天&quot;; timerhtml += &quot;&lt;span&gt;&lt;b&gt;&quot; + hours_0+&quot;&lt;/b&gt;&lt;b&gt;&quot;+hours_1 + &quot;&lt;/b&gt;&lt;/span&gt;时&quot;; timerhtml += &quot;&lt;span&gt;&lt;b&gt;&quot; + minutes_0+&quot;&lt;/b&gt;&lt;b&gt;&quot;+minutes_1 + &quot;&lt;/b&gt;&lt;/span&gt;分&quot;; timerhtml += &quot;&lt;span&gt;&lt;b&gt;&quot; + seconds_0+&quot;&lt;/b&gt;&lt;b&gt;&quot;+seconds_1 + &quot;&lt;/b&gt;&lt;/span&gt;秒&quot;; $(&#39;#&#39;+teamTimeId).html(timerhtml); } timmer=setInterval(this._countTime,1000); } }; new CounterDown(&#39;m1&#39;,&quot;2014/01/01 10:10:10&quot;); &lt;/script&gt; &lt;/body&gt; </code></pre> <p></html>[/code]<br> 在浏览器控制台报如下错误:</p> <p>[img]<a href="http://dl2.iteye.com/upload/attachment/0090/5946/f09d22c5-f35a-3685-8338-5caccad91105.png%5B/img%5D">http://dl2.iteye.com/upload/attachment/0090/5946/f09d22c5-f35a-3685-8338-5caccad91105.png[/img]</a></p> <p>请JavaScript高手看看是怎么回事,要怎么解决才好,谢谢!</p>
  • 写回答

2条回答 默认 最新

  • jinnianshilongnian 2013-10-27 12:23
    关注

    [code="java"]
    <!doctype html>



    Title



    00 00 00

    00 00 00

    <br> function CounterDown(id,endtime){<br> this.id=id;<br> this.endtime=new Date(endtime).getTime();<br> this._countTime();<br> }<br> CounterDown.prototype={<br> _countTime:function(){<br> var timmer;<br> var now =new Date().getTime(); <br> // now = now+1000;<br> var teamTimeId = this.id,<br> endtime = this.endtime,<br> lasttime = (parseInt(endtime)-parseInt(now)) / 1000,<br> days = Math.floor(lasttime / (24 * 3600)),<br> lastSec = (lasttime - days * 24 * 3600),<br> hours = Math.floor(lastSec/3600),<br> minutes = Math.floor((lastSec - hours * 3600)/60),<br> seconds = Math.floor(lastSec - (hours * 3600) - (minutes * 60));</p> <pre><code> if(lasttime &lt;= 0){ clearTimeout(timmer); $(&#39;#&#39;+teamTimeId).html(&quot;&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;天&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;时&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;分&lt;span&gt;&lt;b&gt;0&lt;/b&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;秒&quot;); }else{ day_0=parseInt(days/10); day_1=parseInt(days%10); hours_0=parseInt(hours/10); hours_1=parseInt(hours%10); minutes_0=parseInt(minutes/10); minutes_1=parseInt(minutes%10); seconds_0=parseInt(seconds/10); seconds_1=parseInt(seconds%10); var timerhtml = &quot;&quot;; timerhtml += &quot;&lt;span&gt;&lt;b&gt;&quot; + day_0+&quot;&lt;/b&gt;&lt;b&gt;&quot;+day_1 + &quot;&lt;/b&gt;&lt;/span&gt;天&quot;; timerhtml += &quot;&lt;span&gt;&lt;b&gt;&quot; + hours_0+&quot;&lt;/b&gt;&lt;b&gt;&quot;+hours_1 + &quot;&lt;/b&gt;&lt;/span&gt;时&quot;; timerhtml += &quot;&lt;span&gt;&lt;b&gt;&quot; + minutes_0+&quot;&lt;/b&gt;&lt;b&gt;&quot;+minutes_1 + &quot;&lt;/b&gt;&lt;/span&gt;分&quot;; timerhtml += &quot;&lt;span&gt;&lt;b&gt;&quot; + seconds_0+&quot;&lt;/b&gt;&lt;b&gt;&quot;+seconds_1 + &quot;&lt;/b&gt;&lt;/span&gt;秒&quot;; $(&#39;#&#39;+teamTimeId).html(timerhtml); } var that = this; var timmer = setTimeout(function() { that._countTime(); }, 500); } }; new CounterDown(&#39;m1&#39;,&quot;2014/01/01 10:10:10&quot;); &lt;/script&gt; &lt;/body&gt; </code></pre> <p></html><br> [/code]</p>
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥85 maple软件,solve求反函数,出现rootof怎么办?
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题