Mě stále nedochází, jak chceš mít timer na serveru. Stránka se na
serveru sestaví, okamžitě se pošle prohlížeči a skript se zastaví. Ten
timer se nikdy nespustí. Toto musíš dělat u klienta přes JS:
Pokud šňůrou myslíš Web Forms, tak to mají nějak nasimulované. IMHO
je návrh Web Forms špatně, zbytečně se snaží za každou cenu nasimulovat
určitý přístup, který se na web vůbec nehodí a hlavně ani není
potřeba. Tohle by fungovat prostě nemělo, udělej to přes JavaScript.
Tak s tím musím nesouhlasit. Timer nemá na serveru co dělat (nevztahuj si
to k ASP, ale spíš obecně). Když chceš něco dynamicky měnit bez obnovení
stránky, musíš použít klienta.
var hodiny = $('#hodiny');
setInterval(function() {
var date = new Date();
hodiny.text( date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() );
}, 1000);
Server ti pouze vygeneruje stránku, to je jednorázová operace, jakmile
dorazí ke klientovi do prohlížeče, tak již se serverem nemáš spojení.
Timer bude v JavaScriptu a výpis času bude také v JavaScriptu. Oboje u
klienta.
Tohle je přesně proč nemám rád Web Forms, protože blbnou vývojáře a
ten pak neví, jak HTTP protokol funguje Zapomeň chvilku na ASPčko a použij ten kód od Drahoše.
Ještě jsi nám nenapsal, co vlastně chceš dělat, k čemu ten timer či
runat potřebuješ a jaký má být výsledek. Když ani nedokážeš
specifikovat zadání, tak se těžko radí. Podle mne se snažíš vyrobit
nesmysl.
Možná nemáš ten prvek ještě načtený. V JavaScriptu se musí čekat na
DOM, pokud s ním chceš manipulovat nebo ten javascript musíš umístit pod
daný prvek (HTML dokument se i s JS zpracovává odshora dolů). Pokud to máš
v externím souboru, použij window.onload = function() { /** Tvůj JS kód */ }
Jinak doporučuji používat jQuery, VisualStudio ti ji tam i samo dodá.
Řekl bych že tak, že to bude fungovat. Nerozumím otázce, stačí ten
Drahošův kód vložit do HTML stránky, připojit jQuery a dát tam nějaký
div s příslušným ID.
Nejsem si jistý, jestli je to jedno, protože se ti nevrátí ten element a
ty s ním pracuješ, hodí to chybu a ten timer se nemusí zavést. Často jedna
chyba zabije zavedení celého skriptu.
V tomhle případě to ani nevypíše error. jQuery si totiž spojené prvky
ukládá do pole. To by v případě, že element ještě není načten, bylo
prázdné, takže by se jQuery ani nepokusilo někde měnit text. Pokud by
použil klasický DOM, ukončilo by to jednu anonymní funkci TypeErrorem.
Interval už by ale byl zaregistrovaný, takže by se prováděl dál.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.