Как вызвать функцию, которая использует window.onload из другой функции - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь снова использовать questionFunction (), как только пользователь нажимает кнопку, вызывающую myFunction, но я получаю сообщение об ошибке «QuestionFunction не определена»

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

function myFunction() {
return questionFunction();
}

Я не хочу, чтобы текст изменялся при загрузке, а также снова, когда пользователь нажимает кнопку myFunction ()

Ответы [ 3 ]

0 голосов
/ 29 октября 2018
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/

0 голосов
/ 29 октября 2018

Просто объявите questionFuntion и повторно используйте эту функцию там, где вы хотите

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

function myFunction() {
    return questionFunction();
}
0 голосов
/ 29 октября 2018

Вы получаете эту ошибку, потому что функция выражение не добавляет идентификатор для функции в область, где она появляется (это делают только функции объявления ).

Простой ответ - сделать объявление функции:

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

Поскольку это добавляет идентификатор для функции, теперь вы можете вызывать его так же, как в myFunction.

...