我该如何循环一个函数?

时间:2015-01-03 02:29:11

标签: javascript loops setinterval

我有一个功能' 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>

3 个答案:

答案 0 :(得分:1)

您在此处看到,调用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

答案 1 :(得分:1)

<强> 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没有任何意义,即使它是一个字符串的差异。

答案 2 :(得分:0)

如果您希望能够从y()之外拨打setInterval,则需要在外部进行定义。否则,函数名称的范围只是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);
}