HTML5 + Jscript与JQuery,setInterval问题

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.”都没有任何区别。我正在尝试使其正常工作,以便开始使用它来动画显示仪表盘。有人能看出它为什么不起作用吗?我讨厌网页开发。

setInterval(render, 1000)setInterval("render()", 1000) 哪个有效? - William Niu
2
+1 为不将您桌子上的所有东西扔出窗外而鼓励您 :-) - Andy E
2个回答

2

更改

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

To

    setInterval(render, 1000);

当你将一个字符串传递给setInterval()时,其中的代码是在当前范围之外执行的。最好还是直接传递函数。如果你不加括号,函数就可以像其他变量一样传递。

0

我不确定为什么只使用"render()"不能工作,但是使用这段代码可以解决问题。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接