HTML5 + Jscript с JQuery, проблема setInterval - PullRequest
3 голосов
/ 16 сентября 2010

Пожалуйста, может кто-нибудь сказать мне, почему это не работает, прежде чем я перевожу все на своем столе.

У меня есть следующий HTML-документ:

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

И 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 () не вызывается, но если я изменю строку setInterval на просто 'render ()', это произойдет.Кроме того, если я изменяю setInterval (), чтобы он содержал что-то вроде «alert ('LOL')», то он действительно работает, он просто не работает с определенными мною функциями.С или без точки с запятой в конце функции (ей) для вызова не имеет значения, а также не префикс этого.к моим функциям.

Я пытаюсь заставить это работать, чтобы я мог начать использовать это, чтобы оживить датчик.Кто-нибудь может понять, почему он не работает?

Я ненавижу веб-разработку.

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

Изменить

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

На

    setInterval(render, 1000);

Когда вы передаете строку в setInterval () , код внутри выполняется вне текущей области.В любом случае гораздо более уместно просто передать функцию.Функции можно передавать так же, как и любую другую переменную, если оставить скобки выключенными.

0 голосов
/ 16 сентября 2010

Я не уверен, почему использование просто "render ()" не работает, но использование этого кода решит проблему.

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