2014-04-25 3 views
0

이 페이지를 .load()로로드하고 타임 아웃이 500이지만 텍스트 영역에 포커스가있을 때 타임 아웃을 5000000으로 변경하려고합니다.이 코드는 작동하지 않습니다.jquery 로딩 및 setTimeout 문제

function refreshTable(){ 
    var t = 500; 
    $('#postHolder').load('postFrame.php', function(){ 
    $("textarea").focusin(function() { 
     var t = 5000000; 
      }); 
    setTimeout(refreshTable, t); 
    }); 
} 

답변

1

제한 시간을 시작한 시간을 지정하는 데 사용 된 변수를 변경하여 시간 초과를 변경할 수 없습니다. 당신은 시간 제한을 중지하고 새로운 당신이 원하는 시간에 일을 시작해야합니다

function loadPost(){ 
    $('#postHolder').load('postFrame.php', function(){ 
    $("textarea").focusin(function() { 
     clearTimeout(timer); 
     timer = setTimeout(refreshTable, 5000000); 
    }); 
    var timer = setTimeout(refreshTable, 500); 
    }); 
} 
0

당신이 가까이있어,하지만 당신은 잘못이 일을하고 있습니다 :

  • t 때마다 재설정하여 기능이 실행됩니다. 포커스 핸들러가 5000000으로 설정하면 함수가 실행되고 첫 번째 라인은 500으로 다시 설정합니다. 을 사용하여 (포커스 핸들러 내부에서) 을 사용하여
  • 을 설정합니다. 이 분리가 낮은 범위에서 생성하려면 "새로운 t"변수를 유발하는 높은 업 한

당신은 단지 수준을 t 이동, 하단 범위 var을 제거하고 작동 할 수 내 테스트 : http://jsfiddle.net/8yx6P/

:

var t = 500; 
function refreshTable(){ 
    $('#postHolder').load('postFrame.php', function(){ 
     $("textarea").focusin(function() { 
      t = 5000000; 
     }); 
     setTimeout(refreshTable, t); 
    }); 
} 

여기에서 꺼낸 .load 방법으로 바이올린이야는 같은 생각해야한다