Javascript/JQuery : 需要时间延迟

Javascript/JQuery : Need a time Delay

我正在尝试实现一个 jquery 功能来显示一个人的年龄。此代码位于 http://keith-wood.name/countdown.html

如果我取消对警报功能的注释,我目前所做的工作是有效的,但不是没有它。我试过 javascript setTimeout 函数,但它不会等待并立即执行。如果我 运行 它带有 setTimeout 和警报,弹出窗口会立即弹出。

如何以及在何处实现延迟,以便在执行填充它的代码之前加载 html 元素。

function myAgeLoaded( ) {
    var austDay = new Date();
    austDay = new Date( 1960, 7-1, 18 );
    $( "#defaultCountdown" ).countdown({since: austDay, format: 'YOWDHMS'}).delay( 1500 );
}

function display_text( which )
{

    $.post( "display.php", { content_changed : 1, which : which }, function( data ){ document.getElementById( "main_text" ).innerHTML = html =  data }, "html" );

    if( which == 'abt' ){
//      alert( which );
        myAgeLoaded();
    }

    return false;
}

警报会起作用,因为它 post 推迟了代码执行,因此 post 我在您点击弹出窗口之前收到数据,这起到了延迟的作用,但是,您在互联网上太慢了,或者你点出来的速度太快了,可能会失效。

而从jQuery.post()可以看出你传入的第3个参数,是一个函数,请求成功后会执行,插入后也应该执行myAgeLoaded数据到您的页面。所以myAgeLoaded应该保证在那之后看到#defaultCountdown

function myAgeLoaded( ) {
    var austDay = new Date();
    austDay = new Date( 1960, 7-1, 18 );
    $( "#defaultCountdown" ).countdown({since: austDay, format: 'YOWDHMS'}).delay( 1500 );
}

function display_text( which ) {

    $.post("display.php", {
          content_changed : 1, 
          which : which
          }, 
          // This is the success callback, it'll be called when the request is
           // response with success code and data.
          function( data ) { 
              document.getElementById( "main_text" ).innerHTML = html =  data;
              // Now the page should be filled with content, call the func now.
              if (which === 'abt') {
                myAgeLoaded();
              }
              
          }, "html");

    return false;
}