我怎样才能循环一个函数?

How can I loop a function?

我有一个函数 'y()',我想在延迟循环中调用该函数。

现在我使用 "setInterval" 以便它每 2 秒运行一次函数。通过按钮使用函数 'z1()' 激活 setInterval。但是这个方法好像不行

代码如下:

Javascript:

   var x = 0-1;     
var i;
//document.getElementById("function1").innerHTML = "y()";
    function z1() {
        setInterval(
            function y() { 
                function number_string() {
                    x += 1;
                    document.getElementById("display").innerHTML = x;
                    var number = 1234567890123456789;
                    var one = String(number).charAt(x);
                    var one_as_number = Number(one); 
                    //document.write(one_as_number);
                    document.getElementById("display2").innerHTML = one_as_number;
                }
            },2000
        );
    }

HTML:

<button onclick="z1()">x</button>

你看到这里,调用 y 返回一个函数 number_string。你可以删除它

    function y() { 

            x += 1;
            document.getElementById("display").innerHTML = x;
            var number = 1234567890123456789;
            var one = String(number).charAt(x);
            var one_as_number = Number(one); 
            //document.write(one_as_number);
            document.getElementById("display2").innerHTML = one_as_number;

    }, 2000

或者直接调用...

    function y() { 
        function number_string() {
            x += 1;
            document.getElementById("display").innerHTML = x;
            var number = 1234567890123456789;
            var one = String(number).charAt(x);
            var one_as_number = Number(one); 
            //document.write(one_as_number);
            document.getElementById("display2").innerHTML = one_as_number;
        } ()    // <-- see
    }, 2000

jsBin demo

只需删除您的内部 fn function number_string() { 因为您不会在任何地方调用 int。
同时缓存您计划多次重复使用的元素。

var x = -1; 
var disp1 = document.getElementById("display");
var disp2 = document.getElementById("display2");

function z1() {
  setInterval(function y() { 
    disp1.innerHTML = ++x;
    var number = 1234567890123456789;
    disp2.innerHTML = String(number).charAt(x);
  },2000);
}

我不太清楚你为什么要使用 var number = 1234567890123456789;...但可能你就是喜欢它!

同样使用 Number()innerHTML 没有任何意义,因为即使它是一个字符串,有什么区别。

如果您希望能够从 setInterval 外部调用 y(),您需要在外部定义它。否则,函数名的作用域就是z1函数。

您的 y() 代码定义了一个名为 number_string() 的内部函数,但它从未调用过它。您应该直接将代码放入 y().

的正文中
var x = -1;     
var i;
function y() { 
    x += 1;
    document.getElementById("display").innerHTML = x;
    var number = 1234567890123456789;
    var one = String(number).charAt(x);
    var one_as_number = Number(one); 
    //document.write(one_as_number);
    document.getElementById("display2").innerHTML = one_as_number;
}

//document.getElementById("function1").innerHTML = "y()";
function z1() {
    setInterval(y,2000);
}