Проблемы с загрузкой jquery и setTimeout

0

Я загружаю эту страницу с помощью.load(), а время ожидания - 500, но когда текстовое поле сфокусировано, я хочу, чтобы время ожидания было изменено на 5000000. Этот код не работает.

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

2 ответа

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.
  • используя var down в нижней области (внутри обработчика фокуса). это приводит к тому, что переменная "новый t" создается в этой более низкой области, отдельно от более высокого уровня

Вы можете просто двигаться t до уровня, и удалить var из нижнего объема, и он работает в моих тестах:

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

Здесь скрипка с .load методом .load должна быть той же идеей: http://jsfiddle.net/8yx6P/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню