3

机の上のすべてを解放する前に、なぜこれが機能しないのか誰か教えてください.

次の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()' に変更すると呼び出されます。また、「alert('LOL')」のようなものを含むように setInterval() を変更すると、機能しますが、定義した関数では機能しないようです。呼び出す関数の最後にセミコロンがあってもなくても違いはありません。私の機能に。

ゲージをアニメーション化するために使用できるように、これを機能させようとしています。なぜそれが機能しないのか誰にもわかりますか?

私はウェブ開発が嫌いです。

4

2 に答える 2

2

変化する

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

    setInterval(render, 1000);

文字列をsetInterval()に渡すと、内部のコードが現在のスコープの外で実行されます。とにかく関数を渡す方がはるかに適切です。括弧を省略した場合、関数は他の変数と同じように渡すことができます。

于 2010-09-16T09:52:55.883 に答える
0

「render()」だけを使用しても機能しない理由はわかりませんが、このコードを使用すると問題が解決します。

function startRendering() {
    setInterval(function(){
        render()
    }, 1000);
}
于 2010-09-16T09:53:07.223 に答える