【问题标题】:Javascript - passing parameter to function which calls another functionJavascript - 将参数传递给调用另一个函数的函数
【发布时间】:2013-10-23 17:20:15
【问题描述】:

好吧,我的标题有点混乱,但基本上,我有一个函数,在该函数完成执行后,它应该执行给定的步骤。这是我的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);
}

【问题讨论】:

  • 您的createSideTable 函数是否在调用回调?你能发布那个函数的代码吗?
  • @JasonP 嗯我没有做回调.. 我提出了 createSideTable 函数。我将如何回电?我应该添加'callback();'在我的 createSideTable 函数结束时,还是我需要将另一个名为“回调”的参数传递给 createSideTable 函数?

标签: javascript jquery function settimeout


【解决方案1】:

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

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

【讨论】:

  • 为什么要为此使用回调?只有将回调传递给 fadeIn 方法才有意义。
  • @Bergi 你是对的,这都是同步的,这没有意义。我的编辑可能更有意义。
猜你喜欢
  • 1970-01-01
  • 2012-10-17
  • 2018-11-28
  • 2012-09-25
  • 2020-10-03
  • 2014-01-06
  • 2019-10-09
  • 1970-01-01
相关资源
最近更新 更多