繁体   English   中英

Javascript-将参数传递给调用另一个函数的函数

[英]Javascript - passing parameter to function which calls another function

好的,我的标题有点混乱,但是基本上,我有一个函数,该函数执行完后,它应该执行给定的步骤。 这是我的JavaScript:

createSideTable(showThis, function() {
    $('#' + showThis + 'Screen').slideDown('slow');
});

我希望createSideTable函数在执行此步骤之前运行所有代码

$('#' + showThis + 'Screen').slideDown('slow');

可以执行。 createSideTable或多或少只会使边桌逐渐消失。 该功能可以在本文结尾处看到。 通常,当我有一个要执行所有步骤然后再执行其他给定步骤的函数时,我会这样做

createSideTable(function() {
    $('#' + showThis + 'Screen').slideDown('slow');
});

并且它可以正常工作,但是createSideTable函数需要一个参数(它需要的参数是showThis)。 所以当我尝试

createSideTable(showThis, function() {
    $('#' + showThis + 'Screen').slideDown('slow');
});

它确实创建了sideTable,但是,这一步

$('#' + showThis + 'Screen').slideDown('slow');

创建sideTable后未执行。 怎么会? 这是我的createSideTable函数。

function createSideTable(test) {
    var key = test.substr(test.length -1); //index of Heading
    for (var i=0; i<window['headings' + key].length; i++) {
        if (i == 0) {
            $('#row' + i).addClass('subHeadingClicked');
        }

        $('#row' + i).text('').removeClass('column1invisible');
        $('#row' + i).append(window['headings' + key][i]);
    }
    $('#sideTable').fadeIn(1500);
}

添加回调参数,如果存在,则在最后调用它:

function createSideTable(test, callback) {
    var key = test.substr(test.length -1); //index of Heading
    for (var i=0; i<window['headings' + key].length; i++) {
        if (i == 0) {
            $('#row' + i).addClass('subHeadingClicked');
        }

        $('#row' + i).text('').removeClass('column1invisible');
        $('#row' + i).append(window['headings' + key][i]);
    }
    $('#sideTable').fadeIn(1500);

    if (callback) callback();
}

您应该可以这样称呼它:

createSideTable(showThis, function() {
    $('#' + showThis + 'Screen').slideDown('slow');
});

编辑-

第一个示例显示了回调如何工作。 您可以在任何需要的地方执行回调...例如,如果希望在fadeIn()之后执行该回调,则可以执行以下操作:

function createSideTable(test, callback) {
    var key = test.substr(test.length -1); //index of Heading
    for (var i=0; i<window['headings' + key].length; i++) {
        if (i == 0) {
            $('#row' + i).addClass('subHeadingClicked');
        }

        $('#row' + i).text('').removeClass('column1invisible');
        $('#row' + i).append(window['headings' + key][i]);
    }
    $('#sideTable').fadeIn(1500, function() {
        if (callback) callback();
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM