- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Имеется примерно такой код:
function timer(div, sec){
...
setTimeout("timer('"+div+"', "+(sec-1)+");", 1000);
}
Отдельной функцией каждые 5 сек деляются ajax-запросы к серверу. В определенный момент времени сервер вернет функцию, которая должна поменять время на счетчике т.е. установить новое значение переменной sec в функции timer().
Собственно вопрос: каким образом изменить значение sec в уже запущенной функции?
Мда..........
Просто div = 100500; не подходит?
Не дописал сообщение, форма сама отправилась *sorry*
Перечитайте плз сообщение...
Ufaweb, используйте глобальную перменную да и все, и второй параметр функции опустите
Ufaweb, используйте глобальную перменную да и все, и второй параметр функции опустите
Да, уже так и сделал. Вот только теперь косяк такого плана:
function timer(div){
Код выше не работает т.е. в алерте пишет undefined.alert(timeout[div]);
...
setTimeout("timer('"+div+");", 1000);
}
timeout= [];
timeout['timeout1']= 341;
timeout['timeout2']= 157;
Если в функции явно прописать alert(timeout['timeout1']), то все работает.
Несоответствие типов? Как поправить?
div.toString()
Твой второй ответ внес еще больше неясности. Тут важно как ты аякс запрос делаешь - ибо ответ с сервера придет _после_ запуска setTimeout. Тебе надо сделать чтобы setTimeout выполнялось только после получения ответа с сервера, иначе ты затаймаутишь "старую" переменную, а не ту, что получит с сервера аякс запрос.
--
Как бы там не было, стоит изменить на var timeout = {};
Всем спасибо, все сделал. Во втором варианте (с глобалваром) перепутал div и элементы массива *sorry*
Все в приниципе заработало.)
Ufaweb добавил 05.08.2009 в 14:17
Твой второй ответ внес еще больше неясности. Тут важно как ты аякс запрос делаешь - ибо ответ с сервера придет _после_ запуска setTimeout. Тебе надо сделать чтобы setTimeout выполнялось только после получения ответа с сервера, иначе ты затаймаутишь "старую" переменную, а не ту, что получит с сервера аякс запрос.
--
Как бы там не было, стоит изменить на var timeout = {};
Нет, если переменная счетчика глобальная, то никаких проблем не возникнет. А вот по поводу моего изначального желания "вторгнуться" в функцию - вот это действительно глупо ибо нужно будет как минимум знать экземпляр функции, запущенный в данный момент :)
ТС а statiс нельзя было использовать?
в яваскрипте нет static (хотя добиться того же эффекта можно довольно легко), но в любом случае непонятно как он здесь поможет.