JavaScript работал нормально. Страница выглядит точно так же, а javascript выглядит так, как будто он не работает, но все работает так, как задумано.
Вот что происходит ...
Пользователь нажимает кнопку.
JavaScript выполнен. Заданное время установлено и начинается время.
Runat = "server" теперь отправляет сообщения на сервер (однако время ожидания все еще сокращалось)
Код для события OnClick объектов запускается на сервере (страница перестраивается на стороне сервера).
Новый поток ответов отправляется в браузер клиента.
Клиентский браузер перехватывает его и отображает «новую» страницу, сбрасывающую javascript для новой страницы (это новая страница ASPX, которую вы просили!).
Таким образом, даже runat = "server" в другом элементе формы остановит выполнение методов settimeout или setinterval.
IMO - лучший способ написания кода - использовать AJAX на стороне клиента для публикации значений на вашем сервере, перехватывать их на странице на сервере, создавать свои html или javascripts и отправлять их обратно в браузер клиента для отлова и либо замените innerHTML идентификатора элемента, либо оцените javascript ... меньше накладных расходов, быстрее, лучше, более изящно и гораздо больше контроля. Вы можете использовать stringbuilder, если вы используете .NET для создания фрагментов HTML, поскольку это намного быстрее, чем объединение нескольких строк.
надеюсь, это поможет.