2017-09-25 2 views
1

newby newb here ...私はこの特定の問題がこのサイトで以前に対処されているとは思わない、私は検索して検索しましたが、読み込み中の画像を表示したい私は私のsetTimeoutの前にそれを隠していて、setTimeoutの最後に表示しています。私が読んだことのすべては、これはうまくいくはずだと言いましたが、それはしませスクリプトの実行が終了する前に、イメージが表示されてすぐに消えます。何か案は?ありがとう!setTimeoutのコードが予期された順序で実行されていません

function createHTML(data, listName) { 

    var arr = data.d.results; 

    $(".save").on("click",function(event){ 

    // HERE IS WHERE I SHOW MY LOADING IMAGE INITIALLY 
    $('.logoImg').show(); 


    // SET TIMEOUT FUNCTION 
    setTimeout(function() { 

     $("input.title").each(function(){ 
     var title = $(this).val() ? $(this).val() : null;  
     var currentUserRequest = GetCurrentUser(); 

     (function (userData) { 
      updateListItem(_spPageContextInfo.webAbsoluteUrl,'MyList',id,itemProperties,printInfo,logError); 

      function printInfo() { 
      console.log('Item has been UPDATED!'); 
      } 

      function logError(error){ 
      console.log(JSON.stringify(error)); 
      }     
     }); 
     }); 

     // THIS IS FIRING BEFORE THE ABOVE EACH STATEMENT 
     $('.logoImg').hide(); 
    }, 0); 
    }); 
} 
+1

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout#The_this_problem –

+0

edti:申し訳ありませんが、ちょうどあなたのリンクを見ました。ありがとう! –

+0

ちょっとsumeet ...私はその記事を読んで、私はすでに私のsetTimeoutコンテンツの周りにラッパー関数を持っていますが、それはまだsetTimeoutの他のすべてが完了するまで私の読み込みイメージを隠すのを待つことはありません。私はその記事に基づいてどこが間違っているのかを知ることができます。私が紛失しているものはありますか?初心者を助けてくれてありがとう! –

答えて

0

eachに渡されたコールバック関数は、セレクタに一致する要素ごとに呼び出されます。

hide()は、すべての要素に対してコールバックが呼び出された後にのみ呼び出すようです。

これを達成するには、最後のコールバックの後にコールする必要があります。このような

何かが作品必要があります。

var titles = $("input.title"); 
var length = title.length; 
titles.each(function(index, element) { 
    // Do what you need 
    if(index == (length-1)) { 
    // We are now on the last one 
    $('.logoImg').hide(); 
    } 
}); 
関連する問題