我有一个功能' 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>
答案 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);
}