【问题标题】:How can I get the return value from a function calling another function in javascript/jQuery?如何从调用 javascript/jQuery 中的另一个函数的函数中获取返回值?
【发布时间】:2013-04-01 12:37:16
【问题描述】:

因此您可以为var doub 赋值,如下所示:

function getDouble(number) {
    var doubl = number + number;
    return doubl;
}

var num = 4;
var doub = getDouble(num);

我想知道我是否可以通过调用下面的第二个函数来获取返回类型。那么第二种方法的返回值可以赋值给doub吗?

function getDouble(number) {
    var doubl = number + number;
    return quadruple(doubl);
}

function quadruple(doubl) {
    quad = doubl + doubl
    return quad;
}

var num = 4;
var doub = getDouble(num);

由于某种原因,它对我不起作用。

这是我有问题的代码..我正在做与上述类似的事情,但不起作用:

在我准备好的文档中,我有这段代码..我希望将结果存储在 newjsn

    $(document).ready(function() 
    {
     var newjsn= DatabaseCategoriesToSelectList(num, 200, 100);

我的 DatabaseCategoriesToSelectList 函数是:

function DatabaseCategoriesToSelectList(jsn, max, min){

    var ddl="<option selected='selected' value='"+min+"'>Select...</option>";

    //load categories from database, and put them into the select drop down.
    $.getJSON(GLOBALURL+'content/plugins/subcategories/getSubcategories.php',             
        function(data, ddl) {

            var datas=  jQuery.grep(data, function(element, index){
                return element.category_id < max && element.category_id>min; // retain appropriate elements
            });
            for (x=0; x<datas.length; x++){
                ddl= ddl+"<option value='"+datas[x].category_id+"'data-subcategory='"+datas[x].category_subselect+"'>"+datas[x].category_safe_name+"</option>";
            }   
            alert (ddl); return runafter(ddl, jsn); 
        });

}

function runafter(ddl, jsn){
    jsn=ddl;
    alert(jsn);

    return 500;

}

由于某种原因,警报有效,但我无法让它返回字符串。我什至尝试返回一个随机值 500,但它没有..

【问题讨论】:

  • 这对我来说很好。你是如何运行它的?
  • 谢谢,这是我所拥有的一个简单版本..我现在将添加我的代码
  • quad = doubl + doubl -> var quad = doubl + doubl;
  • @AaronLS 这不会改变答案的值,它只会用quad 变量污染全局变量。

标签: javascript jquery return


【解决方案1】:

问题是你永远不会退出你的DatabaseCategoriesToSelectList 函数。您的函数如下所示:

function DatabaseCategoriesToSelectList(jsn, max, min) {
    ...
    $.getJSON(GLOBALURL+'content/plugins/subcategories/getSubcategories.php',             
        function(data, ddl) {
             ...
             return runafter(ddl, jsn); 
        }
    );
}

内部return 不是从DatabaseCategoriesToSelectList 返回,而是从内部函数返回。但是,无论您做什么,都无法使其返回您想要的值,因为$.getJSON 是一个异步调用。你必须把类似的东西放

function(data, dll) {
    ...
    var newjsn = runafter(ddl, jsn);
    // put the rest of your stuff that uses newjsn here
}

在您的代码中,然后将之后的任何内容也放入该函数中。

【讨论】:

    【解决方案2】:

    您将无法访问 getJson 处理程序的返回值。框架调用该处理程序。您正在给它一个函数,并且 .getJson 在收到响应时调用该函数。如果你需要访问 runAfter 的返回,你需要对它做任何你打算做的事情。

    代替:

    $.getJSON(GLOBALURL+'content/plugins/subcategories/getSubcategories.php',
      function(data, ddl) {
    
              ...
               return runafter(ddl, jsn); 
      });
    }
    

    你需要决定你想用那个值做什么,例如我把它塞进某个隐藏字段的值中:

    $.getJSON(GLOBALURL+'content/plugins/subcategories/getSubcategories.php',
      function(data, ddl) {
    
              ...
              $('#someField').val( runafter(ddl, jsn) ); 
      });
    }
    

    【讨论】:

      【解决方案3】:

      Fiddle输出为:16

      你所做的一切都很好应该如此

       function getDouble (number){
          var doubl = number+number;
          return quadruple(doubl);
          }
      
      function quadruple(doubl){
      var quad=doubl+doubl
      return quad;
      }
      
      var num = 4;
      var doub = getDouble(num);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-28
        • 1970-01-01
        • 1970-01-01
        • 2011-04-04
        • 1970-01-01
        • 2015-12-03
        • 2012-10-28
        相关资源
        最近更新 更多