2017-09-25 9 views
1

newby newb here ...이 특정 문제가이 사이트에서 해결되지 않았다고 생각합니다. 검색하고 검색했지만 작동하는 것을 찾을 수 없습니다. 로드하는 이미지를 표시하고 싶습니다. 내 setTimeout 전에 그것을 숨기고 setTimeout 끝 부분에 바로 표시됩니다. 내가 읽은 모든 것은 이것이 작동해야한다고 말했지만 그렇지 않다. 스크립트가 실행되기 전에 이미지가 나타나고 사라집니다. 어떤 아이디어? 감사! each에 전달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

콜백 함수 선택기와 일치하는 각 요소에 대해 호출된다.

모든 요소에 대해 콜백이 호출 된 후에 만 ​​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(); 
    } 
});