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()' 它会调用。此外,如果我将 setInterval() 更改为包含类似“alert('LOL')”的内容,那么它确实有效,但它似乎不适用于我定义的函数。在要调用的函数末尾有或没有分号没有区别,也没有前缀 this。我的职能。

我试图让这个工作,所以我可以开始使用它来为仪表设置动画。谁能看到它为什么不起作用?

我讨厌网络开发。

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