如何从另一个函数调用正在使用window.onload的函数



一旦用户单击调用myFunction的按钮,我将尝试再次使用questionFunction((,但我收到一个错误"questionFunction未定义">

window.onload = function questionFunction() {
var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1] + " " + randomNumber2 + " " + operationArray[randomOperation2] + " " + randomNumber3;
}
function myFunction() {
return questionFunction();
}

我不希望在加载时更改文本,也不希望在用户单击调用myFunction((时再次更改文本

您会得到这个错误,因为函数表达式没有将函数的标识符添加到它出现的范围中(只有函数声明可以做到这一点(。

简单的答案是将其作为函数声明:

function questionFunction() {
var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1] + " " + randomNumber2 + " " + operationArray[randomOperation2] + " " + randomNumber3;
}
window.onload = questionFunction;

由于这为函数添加了一个标识符,现在您可以像在myFunction中那样调用它。

只需声明questionFuntion,并在需要的地方重用此函数

function questionFunction() {
var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1] + " " + randomNumber2 + " " + operationArray[randomOperation2] + " " + randomNumber3;
}
window.onload = questionFunction;
function myFunction() {
return questionFunction();
}
function questionFunction() {
var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1] + " " + randomNumber2 + " " + operationArray[randomOperation2] + " " + randomNumber3;
}
window.onload = questionFunction;
function myFunction() {
return questionFunction();
}

这会奏效的。由于函数作用域错误,导致出现错误。

你可以在这里阅读:

https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/

最新更新