如何在调用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的新手/@七星河马没问题,别担心。混淆函数引用和函数调用是很常见的。注意:您可以接受左侧带有绿色复选标记的答案。