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

标签 javascript jquery function settimeout

好吧,我的标题有点令人困惑,但基本上,我有一个函数,在该函数执行完成后,它应该执行给定的步骤。这是我的 JavaScript:

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

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

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

可以被执行。 createSideTable 或多或少只是让边 table 慢慢淡入。该功能可以在本文末尾看到。 通常,当我有一个函数想要执行它的所有步骤,然后执行其他给定步骤时,我会这样做

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();
    });
}

关于Javascript - 将参数传递给调用另一个函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19548251/

相关文章:

javascript - 使用 .map 解析 JSON 对象时出现问题

jquery - NodeJS 不会将数据返回给 jQuery.getJSON

javascript - 如果 data.entities.length > 0,则切换显示/隐藏 div,三元运算符在 Javascript/jQuery 上不起作用?

jquery - chrome 中的 $(this).val().length 问题 - 错误值

Swift:如何在函数执行之外终止函数

c++ - 在 C++ 中显式调用原始运算符函数

python - python中数据帧的列的函数计算结果

javascript - 嵌套渲染不影响 DOM

javascript - 检查获取的 URL 中是否存在元素

来自配置的 Javascript 资源 url