HTML5 + Jscript avec JQuery, setInterval problème

S'il vous plaît, quelqu'un peut-il me dire pourquoi cela ne fonctionne pas avant de défendre tout sur mon bureau.

J'ai le document html suivant:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html"; charset=utf-8 /> <title>Sample Gauge using JQuery</title> </head> <body> <canvas id="gauge" width="200" height="200"> Your web browser does not support HTML 5 because you fail. </canvas> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="gauge.js"></script> </body> </html> 

Et gauge.js:

 $(document).ready(function () { //(canvas gets assigned) startRendering(); function startRendering() { setInterval("render();", 1000); } function render() { renderBackground(); renderNeedle(-172); } //(Defined functions for rendering a gauge) }); 

Render () n'est pas appelé, mais si je change la ligne setInterval pour simplement 'render ()', il le fait. En outre, si je change setInterval () pour contenir quelque chose comme "alert ('LOL')" alors il fonctionne, il ne semble pas fonctionner avec des fonctions que j'ai définies. Avec ou sans point-virgule à la fin de la (les) fonction (s) à appel, il ne fait aucune différence, ni préfixe cela. À mes fonctions.

J'essaie de faire fonctionner pour que je puisse commencer à l'utiliser pour animer la jauge. Quelqu'un peut-il voir pourquoi il ne fonctionne pas?

Je déteste le développement web.

Changement

  setInterval("render();", 1000); 

À

  setInterval(render, 1000); 

Lorsque vous passez une chaîne à setInterval () , le code à l'intérieur est exécuté en dehors de la portée actuelle. Il est beaucoup plus approprié de passer la fonction de toute façon. Les fonctions peuvent être transmises comme n'importe quelle autre variable si vous laissez les parenthèses hors tension.

Je ne suis pas sûr que l'utilisation de "render ()" ne fonctionne pas mais l'utilisation de ce code corrige le problème.

 function startRendering() { setInterval(function(){ render() }, 1000); }