2个settimeout函数工作,3个写

时间:2017-05-18 01:17:00

标签: javascript jquery html

我在一个函数中有3个settimeout函数。 调用fades()的那个工作正常,而不是包含注释的那个。

这就是我想要它做的事情:首先,播放加载栏。接下来,淡出栏并显示一个按钮。 示例:https://jsfiddle.net/Thomaszhang19/j2p0eot4/ 加载栏不起作用,但之后一个按钮应该有toggle_visibility(),这将显示它。

500000 X 2 X 500000

4 个答案:

答案 0 :(得分:1)

$('#button1').toggle_visibility();

此代码表示函数toggle_visibility是jQuery的函数。但是在你的代码中,它只是一个函数。

您可以像toggle_visibility('button1')一样调用它。这将改变button1的显示一次。

答案 1 :(得分:0)

toggle_visibility(button1)

" toggle_visibility"不是jquery的功能!所以$()。toggle_visibility未定义

答案 2 :(得分:0)

那是对的家伙。如前所述,这里你可以做什么 - 将这个函数实现为jQuery:

function toggle_visibility(id) {
    var e = $('#'+id);
    if (e.css('display') == 'block'){
        e.css('display', 'none');
    }
    else {
      e.css('display', 'block');
   }
}
jQuery.fn.toggle_visibility = function() {
    return toggle_visibility(this.attr('id'));
}

现在你可以像使用它一样使用它了)

答案 3 :(得分:0)

1)要验证是否正在调用您的回调函数,您只需在其中放置一个console.log,其中包含"函数XXX,名为"。

2)setTimeout中的时间并不完美。它保证在您指定的时间过去之前不会调用您的函数,但 NOT 保证在请求的时间完全

所以,如果你只是说:

setTimeout(f2, 500);
setTimeout(f3, 600);

它不能保证在f2之后100毫秒正好调用f3。

如果你试图依靠它来运行动画,它们将不会一直流畅。

如果你需要"链"调用,让每个回调调用另一个。

setTimeout(function() {
    console.log("Function 1");
    // do stuff
    setTimeout(function() {
        console.log("Function 2");
        // do stuff
        setTimeout(function() {
            console.log("Function 3")
            // do stuff
        },0);
    }, 500);
}, 1000)

嵌套回调对于读/写来说是讨厌的,所以你可以将它展平

function f1() {
    console.log("Function 1");
    // do stuff
    setTimeout(f2, 500)
}

function f2() {
    console.log("Function 2");
    // do stuff
    setTimeout(f3, 1000)
}

function f3() {
    console.log("Function 3")
    // do stuff
}

setTimeout(f1, 1000)