簡體   English   中英

如何從javascript / jQuery中調用另一個函數的函數獲取返回值?

[英]How can I get the return value from a function calling another function in javascript/jQuery?

因此,您可以為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的隨機值,但沒有。

問題在於您永遠不會退出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
}

在您的代碼中,然后將之后的所有內容也放入該函數中。

小提琴輸出為: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);

您將無法訪問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) ); 
  });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM