Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 2个settimeout函数工作,3个已写入_Javascript_Jquery_Html - Fatal编程技术网

Javascript 2个settimeout函数工作,3个已写入

Javascript 2个settimeout函数工作,3个已写入,javascript,jquery,html,Javascript,Jquery,Html,我在一个函数中有3个settimeout函数。 调用淡入淡出效果很好的那个,而不是包含注释的那个 这就是我想要它做的:首先,播放加载条。接下来,淡出该栏并显示一个按钮。 例子: 加载栏并没有很好地工作,但在那之后,一个按钮应该具有toggle_可见性,这将显示它 <script> function toggle_visibility(id) { var e = document.getElementById(id); if (e.style.display =

我在一个函数中有3个settimeout函数。 调用淡入淡出效果很好的那个,而不是包含注释的那个

这就是我想要它做的:首先,播放加载条。接下来,淡出该栏并显示一个按钮。 例子: 加载栏并没有很好地工作,但在那之后,一个按钮应该具有toggle_可见性,这将显示它

<script>
  function toggle_visibility(id) {
    var e = document.getElementById(id);
      if (e.style.display == 'block')
        e.style.display = 'none';
      else
        e.style.display = 'block';

   };

    function fades() {
     //problem settimeout
    setTimeout(function(){
      $('#button1').toggle_visibility();
     }, 5500);
     // end of problem
    setTimeout(function() {
      playDemo('disney', 2, disneyInterval);
    }, 1000);

    setTimeout(function() {
      $('#mydiv').fadeOut();
    }, 5000); 

   };

    setTimeout(function() {
      fades();
    }, 10);

</script>
这段代码表示函数toggle_visibility是jQuery的一个函数。但在代码中,它只是一个函数

您可以像切换“按钮1”一样调用它。这将改变按钮1的显示一次

toggle_visibility(button1)

切换\u可见性不是jquery的功能!所以$.toggle_可见性未定义

没错,伙计们。如前所述,您可以做的是将此函数实现到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'));
}

现在,您可以像使用

1一样使用它来验证是否正在调用回调函数,只需在其中放置一个console.log,并调用类似函数XXX的内容

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

如果你只是说:

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)
$'button1'。切换_可见性;未向函数传递任何参数。我猜这就是为什么它不起作用?
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)