2017-08-22 10 views
2

オドメーターを起動してオンロードカウントを開始するにはhttps://jsfiddle.net/aht87opr/6/? (私は試してみましたが、役に立たない、それを開始すべきスニペットはjavascriptの一番下にあります)。私は助けてくださいJavaScriptの初心者です:)JavaScript onloadをカウントするオドメーターを作成するにはどうすればいいですか?

これはギャビンBrockさんのオドメーターであるhttp://brock-family.org/gavin/software/web/odometer.html

//<![CDATA[ 
     var n = 0; 
     var myOdometer; 
     function startcounting() { 
      var div = document.getElementById("odometerDiv"); 
      myOdometer = new Odometer(div, {value: n, digits: 6, tenths: true}); 
      update(); 
     } 

     function update() { 
      n=n+0.0025 
      myOdometer.set(n); 
      setTimeout("update()", 0); 
     } 
    //]]> 

startcounting(); 

答えて

2

のsetTimeoutは(あなたが文字列を渡す)

setTimeout(update, 0);を試し関数ハンドルを渡すことを望んでいるので、それが動作しません。 MDNから

1

setTimeoutに渡される文字列はグローバルコンテキストで評価されるため、文字列がコードとして評価されるときに、setTimeout()が呼び出されたコンテキスト内のローカルシンボルは使用できません。この構文は、evalの()セキュリティ上のリスクを使用して作るのと同じ理由で推奨されていません

さらに

、。

setTimeout(コードを文字列として渡すと、updateメソッドが表示されないため、コードが機能しません)。 @ドレークが推奨するように、updateを直接渡すだけで、これを修正してコードの品質を向上させることができます

関連する問題