setInterval()

Status
Niet open voor verdere reacties.

legifri

Nieuwe gebruiker
Lid geworden
4 nov 2009
Berichten
3
Hoi ik heb even eenv vraagje over setInterval().
Ik heb een code gemaakt maar als ik als interval 1000 invoer dan wacht hij 1 seconde totdat hij pas wordt laten zien. Hoe kan ik dit verhelpen?
[JS]var serverdate = new Date()
function padlength(string) {
var output = (string.toString().length==1)? "0"+string : string
return output
}

function displaytime() {
serverdate.setSeconds(serverdate.getSeconds()+1)
var timestring = padlength(serverdate.getHours())+":"+padlength(serverdate.getMinutes())+":"+padlength(serverdate.getSeconds())
document.getElementById("servertime").innerHTML = timestring
}

window.onload = function(){
setInterval("displaytime()", 1000);
}[/JS]
En voor html heb ik deze code:
HTML:
<a href="index.php?a=mod_stat_servertime">Server Time: <span class="servertime" id="servertime"></span>
 
Er zijn 3 of 4 methodes om dit beter te doen ( = je probleem te verhelpen), maar ik doe er 1 voor:
[JS]var serverdate = new Date()
function padlength(string) {
var output = (string.toString().length==1)? "0"+string : string
return output
}

function displaytime() {
serverdate.setSeconds(serverdate.getSeconds()+1)
var timestring = padlength(serverdate.getHours())+":"+padlength(serverdate.getMinutes())+":"+padlength(serverdate.getSeconds())
document.getElementById("servertime").innerHTML = timestring
}

window.onload = function() {
displaytime();
setInterval("displaytime()", 1000);
}[/JS]
uiteraard heb ik nog wat te corrigeren op je code - dit zou ik ervan maken:
[JS]
var serverdate = new Date();

function padlength(invoer)
{
return (invoer.toString().length==1)? "0" + invoer : invoer;
}


function displaytime()
{
var h, m, s, timestring;

h = padlength(serverdate.getHours());
m = padlength(serverdate.getMinutes());
s = padlength(serverdate.getSeconds());

serverdate.setSeconds(s+1);

document.getElementById("servertime").innerHTML = h + ":" + m + ":" + s;

setTimeout(displaytime, 1000);
}


window.onload = function()
{
displaytime();
}
[/JS]
kort commentaar:
1. GEBRUIK puntcomma's ( ; ) aan het eind van elke regel. Dat's de afspraak. Zo werkt Javascript.
2. setTimeout en setInterval nemen als 1e parameter een functie-referentie, GEEN string
3. errr, dat was het eigenlijk wel :thumb:​



:thumb:

[edit]weet niet of je het weet, maar javascript 'Date' is GEEN server tijd, maar tijd van de computer (eigenlijk van de browser, maargoed, die heeft het meestal van de pc). Dus, het is dezelfde tijd als je system-klok (windows: rechtsonder).[/edit]
 
Laatst bewerkt:
Thank you for answering!
Sorry for my late answer:P But there was one problem, when the seconds reached 01 it suddenly jumped to 11:P So I changed the code a bit but it works now perfect:
[JS] var serverdate = new Date();
function padlength(invoer) {
return (invoer.toString().length==1)? "0" + invoer : invoer;
}

function displaytime() {
var h, m, s, timestring;

serverdate.setSeconds(serverdate.getSeconds()+1)
h = padlength(serverdate.getHours());
m = padlength(serverdate.getMinutes());
s = padlength(serverdate.getSeconds());

document.getElementById("servertime").innerHTML = h + ":" + m + ":" + s;
setTimeout(displaytime, 1000);
}

window.onload = function() {
displaytime();
}[/JS]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan