2016-12-17 21 views
1

問題点がどこにあるか私はなぜ私のsetIntervalは1回だけ実行されますか?

スクリプトが

<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(引数);}、1000);それを参照しないで、関数を呼び出している' – epascarello

+0

はあなたの迅速かつ正確な答えをいただき、ありがとうございます。 – Minime

答えて

0

です(TT)...知りません最初に戻り値を引数として設定する代わりに、コールバック関数を使用します。

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

+0

迅速かつ正確な回答をいただきありがとうございます。 – Minime

+0

本当にバインドの説明に感謝します。かっこいいね! – Minime

関連する問題