【问题标题】:How to call a function that is using window.onload from another function如何从另一个函数调用正在使用 window.onload 的函数
【发布时间】:2018-10-29 11:35:08
【问题描述】:

一旦用户单击调用 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() 后再次更改

【问题讨论】:

    标签: javascript function return


    【解决方案1】:

    您收到该错误是因为函数 表达式 没有将函数的标识符添加到它出现的范围内(只有函数 声明 会这样做)。

    简单的答案是改为使用函数声明:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:
        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/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-21
          • 2015-07-03
          • 2011-09-19
          • 2021-08-24
          • 2021-07-03
          • 2020-03-09
          • 1970-01-01
          • 2020-11-17
          相关资源
          最近更新 更多