0

因此,您可以分配一个值,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,但它没有..

4

3 回答 3

2

问题是您永远不会退出您的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
}

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

于 2013-04-09T21:42:22.447 回答
1

您将无法访问 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) ); 
  });
}
于 2013-04-09T21:45:43.937 回答
1

小提琴输出为: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);
于 2013-04-09T21:29:20.463 回答