Javascript变量不显示在简单的HTML脚本中

时间:2013-12-06 22:45:07

标签: javascript html

我正在尝试一个简单的html页面无限期地计数。但由于某种原因,我的第二个变量没有显示出来。第二个变量是嵌入式javascript计时器如您所见,第一个变量显示,但不显示第二个变量。道歉,我是初学者。

https://dl.dropboxusercontent.com/u/44188718/time.html

<script>
var test;
test = 123;
</script>

<script>document.write(test)</script>


<script>
var time;
time = 0;

function startTimer()
{
    window.setTimeout(add(), 60 *  1000);
}

add()
{
    var += 1;
}
</script>

<script>document.write(time)</script>

3 个答案:

答案 0 :(得分:1)

您的中间脚本元素包含多个错误。

这一行:

window.setTimeout(add(), 60 *  1000);

应该是:

window.setInterval(add, 60 * 1000);

setTimeout()只调用一次函数。 setInterval()重复调用一个函数。另请注意,我在()之后删除了add - 使用括号立即调用该函数并将其结果传递给setTimeout()setInterval(),但是您想通过函数本身只是使用没有括号的函数名称。 (并且window.部分是可选的)。

然后这一行:

add()

应该是:

function add()

而且:

    var += 1;

应该是:

    time += 1;
    // OR
    test += 1;

(我不确定你打算增加哪个变量。)

此外,您永远不会调用startTimer()函数。

最后,在add()函数中,您需要实际输出值。 document.write()几乎不是一个好主意,因此我建议您在页面上创建一个元素来保存数字并更新其内容:

<div id="timer"></div>

document.getElementById("timer").innerHTML = time; // or = test; (whichever var you want)

演示以上所有内容:http://jsfiddle.net/Y3XMk/

或与简化代码相同的效果:http://jsfiddle.net/Y3XMk/1/

答案 1 :(得分:1)

您的代码中存在一些误解,因此我将尝试通过它们。

  1. 定义函数时必须指定function关键字。在你的情况下:

    add(){ ... }
    

    应该是:

    function add() { ... }
    

    然后,您可以通过setTimeout代码安全地调用它。

  2. 使用关键字var,您基本上告诉您即将定义变量for the current scope。首先,由于当前范围仍为windowthe global scope),因此您无需添加var。其次,您必须在更改时使用变量名称,或添加变量名称。在你的情况下:

    var += 1
    

    应该是:

    时间+ = 1

  3. 当你调用它们时,函数会被调用一次。在您的情况下,document.write(time)将在解析文档时被调用一次,因此会在您的文档中写入1。您必须在添加功能中调用write方法,以便在每个间隔显示数字。所以:

    function add(){
        time += 1;
        document.write(time);
    }
    
  4. setTimeout调用指定的回调函数一次,经过一段时间后,我相信您正在寻找setInterval。您可以像这样使用它:     function startTimer(){         window.setInterval(add,60 * 1000);     } 但是不要忘记调用你的函数,以便启动计时器。

  5. 以下是您的代码示例(它每秒都有效):

    Working fiddle

答案 2 :(得分:0)

您的代码存在很多问题。

我相信你要做的是:

<script>
    var time = 0;
    window.setInterval(function(){
    document.write(time);
    time++;
    }, 60*1000);
</script>

请在此处查看工作演示:

http://jsfiddle.net/8MVFB/

只需点击“运行”。