Jag undrar hur man gör en levande klocka som är baserad på servertid (hämtat med ex ASP). Jag är riktigt rutten på JavaScript och skulle vara mycket tacksam för hjälp. Jag vet inte vad du menar med en levande klocka, men kanske detta kan va nåt? Det är ju inte en serverbaserad klocka. Vad jag förstår så är den där klockan baserad på klientens tid. Jag har försökt att hämta tid från ASP och sedan lägga in det i javascript-koden utan framgång. Närmast kom jag genom att skapa ett nytt datumobjekt i javascript typ så här: Det jag menar är att du gör en kombination av teknikerna.Klocka baserad på servertid
Jag har suttit och försökt att bygga ihop på egen hand genom att helt enkelt skapa ett Date() objekt med tid från ASP men jag blir inte klok.
Någon som skulle kunna hjälpa mig. Skulle vara mycket tacksam.Sv: Klocka baserad på servertid
<HTML>
<HEAD>
<STYLE TYPE=TEXT/CSS>
<!--
BODY
{background:lightgreen; color:blue; font-size:12pt; Font-weight:bold; margin:3px;}
#tabell {width:8%; height=2%; background-color:yellow; border:3px solid blue;
font-family: arial; font-size:14px; font-weight:bold; color:blue;
position:absolute; left:91%; top:0%;}
-->
</style>
</HEAD>
<BODY>
<b>
<script type="text/javascript">
var days = new Array("Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag");
var months = new Array("Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December");
var now = new Date();
day = now.getDay();
date = now.getDate();
month = now.getMonth();
year = now.getYear();
if (year < 2001) { year += 2001 }
document.write(days[day] + "en den " + date + " " + months[month] + " " + year);
</script>
<SCRIPT LANGUAGE="JavaScript">
<!--
lagerNamnKlocka="klocka";
function tid()
{
datum=new Date();
timmar=datum.getHours();
minuter=datum.getMinutes();
sekunder=datum.getSeconds();
timmar="0"+timmar
minuter="0"+minuter
sekunder="0"+sekunder
timmar=timmar.substring(timmar.length-2,timmar.length)
minuter=minuter.substring(minuter.length-2,minuter.length)
sekunder=sekunder.substring(sekunder.length-2,sekunder.length)
visar=timmar+":"+minuter+":"+sekunder
if (document.all)
{
document.all[lagerNamnKlocka].innerHTML = visar;
}
else if (document.layers)
{
with (document[lagerNamnKlocka].document)
{
open();
write(visar);
close();
}
}
else if (document.getElementById)
{
document.getElementById(lagerNamnKlocka).innerHTML=visar; //Netscape 6 har denna hierarki
}
setTimeout("tid()", 1000);
}
setTimeout("tid()", 100);
//-->
</SCRIPT>
</b>
<table id=tabell>
<td>
<!-- SPAN id="klocka" style="position:absolute; left:90%; top:3%;" ></SPAN -->
<SPAN id="klocka"></SPAN>
</td>
</BODY>
</HTML>Sv: Klocka baserad på servertid
Kan inte ASP speciellt bra, men det borde väl bara vara att skriva ut en starttid i skriptet, och sen använda samma princip.Sv: Klocka baserad på servertid
now = new Date('hämtar tid från ASP')
...fortsättning kod
Det funkade ganska bra. Problemet var att jag då inte fick klockan att ticka, utan man var tvungen att ladda om den.
Fortfarande tacksam för hjälp.Sv: Klocka baserad på servertid
Du gör en startfunktion; typ
var theTime;
function StartClock()
{
theTime = new Date();
NextSec();
}
och sen en funktion där du ökar klockan och skriver ut resultatet
function NextSec()
{
//använd theTime för att få ut tiden som en sträng
//och skriv ut strängen där du vill ha den
//öka klockan med 1.
setTimeOut("NextSec()", 1000);
}
När du får ett sånt skript att fungera kan du ju byta ut start-funktionen till servertiden med ASP.Sv: Klocka baserad på servertid
Svara