2 votes

Comment appeler une fonction qui utilise window.onload depuis une autre fonction

Je essaie d'utiliser la fonction questionFunction() une fois que l'utilisateur clique sur un bouton qui appelle myFunction mais je reçois une erreur 'questionFunction n'est pas défini'

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

function myFunction() {
return questionFunction();
}

Je veux que le texte soit modifié au chargement de la page et à nouveau une fois que l'utilisateur clique pour appeler myFunction()

1voto

T.J. Crowder Points 285826

Vous obtenez cette erreur parce qu'une expression de fonction ne ajoute pas d'identificateur pour la fonction à la portée où elle apparaît (seules les déclarations de fonction le font)

La solution simple est de faire de cela une déclaration de fonction à la place:

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

Étant donné que cela ajoute un identificateur pour la fonction, maintenant vous pouvez l'appeler de la manière dont vous le faites dans myFunction.

1voto

hoangdv Points 2752

Il suffit de déclarer la fonction questionFuntion et de réutiliser cette fonction où vous le souhaitez

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

function myFunction() {
    return questionFunction();
}

0voto

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

window.onload = questionFunction;

function myFunction() {
  return questionFunction();
}

Cela fonctionnera. Vous obtenez une erreur en raison de la mauvaise portée de la fonction.

Vous pouvez en lire davantage ici:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X