Я загружаю эту страницу с помощью.load(), а время ожидания - 500, но когда текстовое поле сфокусировано, я хочу, чтобы время ожидания было изменено на 5000000. Этот код не работает.
function refreshTable(){
var t = 500;
$('#postHolder').load('postFrame.php', function(){
$("textarea").focusin(function() {
var t = 5000000;
});
setTimeout(refreshTable, t);
});
}
Вы не можете изменить тайм-аут, изменив переменную, которая использовалась для указания времени начала таймаута. Вам нужно остановить тайм-аут и запустить новый с нужным вам временем:
function loadPost(){
$('#postHolder').load('postFrame.php', function(){
$("textarea").focusin(function() {
clearTimeout(timer);
timer = setTimeout(refreshTable, 5000000);
});
var timer = setTimeout(refreshTable, 500);
});
}
Вы близки, но вы делаете две вещи неправильно:
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/