如何在调用javascript之前停止函数运行
我有一个包含函数的数组:如何在调用javascript之前停止函数运行,javascript,Javascript,我有一个包含函数的数组:var ranArray=[funct1(),funct2()],函数本身: function funct1() { document.write("hello"); }; function funct2() { document.write("hi"); }; 我试图使其在按下按钮时执行funct1或funct2。 然而,我甚至没有按下按钮,在页面上我看到了我的按钮和“hellohi”。以下是随机化的函数: function getFunctions(
var ranArray=[funct1(),funct2()]
,函数本身:
function funct1() {
document.write("hello");
};
function funct2() {
document.write("hi");
};
我试图使其在按下按钮时执行funct1或funct2。
然而,我甚至没有按下按钮,在页面上我看到了我的按钮和“hellohi”。以下是随机化的函数:
function getFunctions() {
return ranArray[Math.floor(Math.random * ranArray.length)];
};
以下是HTML:
<button type="button" name="ranButton" id="ranButton" onclick="getFunctions();">Random Button</button>
随机按钮
您的数组声明实际上正在调用funct1
和funct2
,并试图在数组中存储返回值。您需要的是一个函数数组。删除括号,使函数本身存储在数组中,而不是存储在返回值中。应该是这样的:
var ranArray = [funct1, funct2];
您的数组声明实际上正在调用
funct1
和funct2
,并试图在数组中存储返回值。您需要的是一个函数数组。删除括号,使函数本身存储在数组中,而不是存储在返回值中。应该是这样的:
var ranArray = [funct1, funct2];
首先需要存储函数引用(
[funct1,funct2]
),()
将立即调用函数。接下来,您可以使用.call()
调用函数,或者更简单地在ranArray[Math.floor(Math.random()*ranArray.length)]
的末尾添加()
,如@jfriend00所述。还要注意,Math.random
必须是Math.random()
这里使用
document.write()
也会覆盖DOM。所以我不推荐它,相反,您可能希望将此内容放在元素中。如果您有id#foo
的某些元素,则可以改为设置该DOM元素的文本:
document.getElementById("foo").textContent = "...";
首先需要存储函数引用(
[funct1,funct2]
),()
将立即调用函数。接下来,您可以使用.call()
调用函数,或者更简单地在ranArray[Math.floor(Math.random()*ranArray.length)]
的末尾添加()
,如@jfriend00所述。还要注意,Math.random
必须是Math.random()
这里使用
document.write()
也会覆盖DOM。所以我不推荐它,相反,您可能希望将此内容放在元素中。如果您有id#foo
的某些元素,则可以改为设置该DOM元素的文本:
document.getElementById("foo").textContent = "...";
这里没有理由使用
.call()
。您只需使用返回ranArray[Math.floor(Math.random()*ranArray.length)]()代码>@jfriend00真的吗?我想不到那会起作用。我将在中编辑它,谢谢。索引到数组中的结果是一个函数引用,所以只要在末尾添加一个()
,就会调用该函数引用。谢谢各位。。。我是JS的新手/@七星河马没问题,别担心。混淆函数引用和函数调用是很常见的。注意:您可以接受左边带有绿色复选标记的答案。这里没有理由使用.call()
。您只需使用返回ranArray[Math.floor(Math.random()*ranArray.length)]()代码>@jfriend00真的吗?我想不到那会起作用。我将在中编辑它,谢谢。索引到数组中的结果是一个函数引用,所以只要在末尾添加一个()
,就会调用该函数引用。谢谢各位。。。我是JS的新手/@七星河马没问题,别担心。混淆函数引用和函数调用是很常见的。注意:您可以接受左侧带有绿色复选标记的答案。