JavaScript settimeout函数的问题

JavaScript settimeout函数的问题,javascript,Javascript,我对JavaScript非常陌生,似乎无法使用setTimeout命令执行任何操作。我知道这个问题以前被问过很多次,但我花了两个小时研究了所有以前的案例,但它仍然不适用于我。以下是我目前得到的信息: <html> <script type="text/javascript"> var i = 0; function aloop() { document.write(i); i++; } funct

我对JavaScript非常陌生,似乎无法使用setTimeout命令执行任何操作。我知道这个问题以前被问过很多次,但我花了两个小时研究了所有以前的案例,但它仍然不适用于我。以下是我目前得到的信息:

<html>
    <script type="text/javascript">

    var i = 0;
    function aloop() {
        document.write(i);
        i++;
    }

    function afunction() {
        if (i <= 12) {
            setTimeout(aloop(), 1000);
            afunction();
        }
    }

    </script>

    <form>
    <input type=submit value="Click me!" onClick="afunction()">
</html>

var i=0;
函数aloop(){
文件.编写(i);
i++;
}
函数affunction(){

如果(i将函数传递给
setTimeout
,则不是函数调用的返回值

setTimeout(aloop,1000);

将函数传递给
setTimeout
,而不是函数调用的返回值

setTimeout(aloop,1000);
问题是您正在调用函数,而不是将函数排队

setTimeout(aloop,1000)
不是
setTimeout(aloop(),1000);

问题在于调用函数而不是对函数进行排队


setTimeout(aloop,1000)
setTimeout(aloop(),1000);
您没有描述什么不起作用,但我假设您希望
I
以1000毫秒的间隔编写

这样做:

<html>
 <!-- you're missing your head tags -->

<head>
    <title> my page </title>

    <script type="text/javascript">
    var i=0;
    function aloop() {
          // don't use document.write after the DOM is loaded
        document.body.innerHTML = i;
        i++;
        afunction(); // do the next call here
    }
    function afunction() {
        if (i<=12) {
                 //     v---pass the function, don't call
            setTimeout(aloop,1000);

      //    afunction();  // remove this because it'll call it immediately
        }
    }
    </script>
</head>

<!-- you're missing your body tags -->
<body>
    <form>
        <input type=submit value="Click me!" onClick="afunction()">
    </form> <!-- you're missing your closing form tag --> 
</body>
</html>

我的页面
var i=0;
函数aloop(){
//加载DOM后不要使用document.write
document.body.innerHTML=i;
i++;
affunction();//在此处执行下一个调用
}
函数affunction(){
如果(i)

您没有描述什么不起作用,但我假设您希望以1000毫秒的间隔编写
I

这样做:

<html>
 <!-- you're missing your head tags -->

<head>
    <title> my page </title>

    <script type="text/javascript">
    var i=0;
    function aloop() {
          // don't use document.write after the DOM is loaded
        document.body.innerHTML = i;
        i++;
        afunction(); // do the next call here
    }
    function afunction() {
        if (i<=12) {
                 //     v---pass the function, don't call
            setTimeout(aloop,1000);

      //    afunction();  // remove this because it'll call it immediately
        }
    }
    </script>
</head>

<!-- you're missing your body tags -->
<body>
    <form>
        <input type=submit value="Click me!" onClick="afunction()">
    </form> <!-- you're missing your closing form tag --> 
</body>
</html>

我的页面
var i=0;
函数aloop(){
//加载DOM后不要使用document.write
document.body.innerHTML=i;
i++;
affunction();//在此处执行下一个调用
}
函数affunction(){
如果(i)

除了答案,还可以研究使用常规的
for
循环。除了答案,还可以研究使用常规的
for
循环。感谢所有人的帮助。它现在按我所希望的方式工作。感谢所有人的帮助。它现在按我所希望的方式工作。