2016-12-17 2 views
1

я не знаю, где это точка проблема ... (TT)Почему мой setInterval работает только один раз?

скрипт

<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> 
+2

Вы вызываете функцию, а не ссылаться на него 'setInterval (функция() {PrintTime (ARG);}, 1000);' – epascarello

+0

Спасибо за быстрый и точный ответ. – Minime

ответ

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>


Или связать аргумент как this контекст, используя Function#bind метод и внутри функции вы можете получить значение из 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>

+0

Благодарим за быстрый и точный ответ. – Minime

+0

Действительно благодарю вас за объяснение привязки. это круто! – Minime

Смежные вопросы