为什么我的setInterval只运行一次?

时间:2016-12-17 16:38:20

标签: javascript setinterval

我不知道问题点在哪里......(T.T)

脚本

<script type="text/javascript">
function printTime(arg) {
    var mydate = new Date();
    document.getElementById(arg).innerHTML = mydate;
}
function startTimer(arg) {
    setInterval(printTime(arg), 1000);
}
</script>

HTML

<body onload="startTimer('timer')">
    <h1 id="timer">
    </h1>
</body>

1 个答案:

答案 0 :(得分:0)

您最初只是执行该函数并将返回值设置为参数,而是使用回调函数。

<body onload="startTimer('timer')">
  <h1 id="timer">
    </h1>
</body>


<script type="text/javascript">
  function printTime(arg) {
    var mydate = new Date();
    document.getElementById(arg).innerHTML = mydate;
  }

  function startTimer(arg) {
    setInterval(function() {
      printTime(arg)
    }, 1000);
  }
</script>

<小时/> 或者使用Function#bind方法将参数绑定为this上下文,并在函数中从this获取值。

<body onload="startTimer('timer')">
  <h1 id="timer">
    </h1>
</body>


<script type="text/javascript">
  function printTime() {
    var mydate = new Date();
    document.getElementById(this).innerHTML = mydate;
  }

  function startTimer(arg) {
    setInterval(printTime.bind(arg), 1000);
  }
</script>