Måske skulle du lave en funktion med arrayet: function foo() { scrollercontent[9]=myWatch(); windowSetTimeout("foo();",1000); // eller setInterval } foo();
Her er uret: var servStamp, locStartStamp, inx, spacer, d = document; servStamp = <%=myTime%>; locStartStamp = new Date().getTime(); inx = 0; function myWatch() { var now, tims, mins, spacer, timeGone = new Date().getTime() - locStartStamp; now = new Date(servStamp+timeGone); tims = now.getHours(); mins = now.getMinutes(); secs = now.getSeconds();
if (tims<10) tims = "0" + tims; if (mins<10) mins = "0" + mins; if (secs<10) secs = "0" + secs;
spacer= (inx%2)? " " : ":";
return("Klokken er nu "+ tims + spacer + mins + " " + secs+".")
inx++; setTimeout("myWatch()",1000)
} Virker helt fint og det går også hvis man indsætter det i en form, eller laver et lag der opdateres. Så vil jeg gerne indsætte det i et array scrollercontent[1]='besked 1' scrollercontent[2]='besked 2' scrollercontent[3]='besked 3' scrollercontent[4]='besked 4' scrollercontent[5]='besked 5' scrollercontent[6]='besked 6' scrollercontent[7]='besked 7' scrollercontent[8]='besked 8' scrollercontent[9]=Mywatch();
array'et bliver så vist en efter en i en textscroller
var scroller_width='150px' var scroller_height='115px' var bgcolor='#E0EFD1' var pause=3000 //SET PAUSE BETWEEN SLIDE (3000=3 seconds)
var scrollercontent=new Array() //Define scroller contents. Extend or contract array as needed scrollercontent[0]='Visit our partner site <a href="http://freewarejava.com">Freewarejava.com </a>for free Java applets!' scrollercontent[1]='Got JavaScript? <a href="http://www.javascriptkit.com">JavaScript Kit</a> is the most comprehensive JavaScript site online.'
////NO need to edit beyond here/////////////
var ie4=document.all var dom=document.getElementById&&navigator.userAgent.indexOf("Opera")==-1
var curpos=scroller_height*(1) var degree=10 var curcanvas="canvas0" var curindex=0 var nextindex=1
function moveslide(){ if (curpos>0){ curpos=Math.max(curpos-degree,0) tempobj.style.top=curpos+"px" } else{ clearInterval(dropslide) if (crossobj.filters) crossobj.filters.alpha.opacity=100 else if (crossobj.style.MozOpacity) crossobj.style.MozOpacity=1 nextcanvas=(curcanvas=="canvas0")? "canvas0" : "canvas1" tempobj=ie4? eval("document.all."+nextcanvas) : document.getElementById(nextcanvas) tempobj.innerHTML=scrollercontent[curindex] nextindex=(nextindex<scrollercontent.length-1)? nextindex+1 : 0 setTimeout("rotateslide()",pause) } }
function rotateslide(){ if (ie4||dom){ resetit(curcanvas) crossobj=tempobj=ie4? eval("document.all."+curcanvas) : document.getElementById(curcanvas) crossobj.style.zIndex++ if (crossobj.filters) document.all.canvas0.filters.alpha.opacity=document.all.canvas1.filters.alpha.opacity=20 else if (crossobj.style.MozOpacity) document.getElementById("canvas0").style.MozOpacity=document.getElementById("canvas1").style.MozOpacity=0.2 var temp='setInterval("moveslide()",50)' dropslide=eval(temp) curcanvas=(curcanvas=="canvas0")? "canvas1" : "canvas0" } else if (document.layers){ crossobj.document.write(scrollercontent[curindex]) crossobj.document.close() } curindex=(curindex<scrollercontent.length-1)? curindex+1 : 0 }
function resetit(what){ curpos=parseInt(scroller_height)*(1) var crossobj=ie4? eval("document.all."+what) : document.getElementById(what) crossobj.style.top=curpos+"px" }
function startit(){ crossobj=ie4? eval("document.all."+curcanvas) : dom? document.getElementById(curcanvas) : document.tickernsmain.document.tickernssub if (ie4||dom){ crossobj.innerHTML=scrollercontent[curindex] rotateslide() } else{ document.tickernsmain.visibility='show' curindex++ setInterval("rotateslide()",pause) } }
if (ie4||dom||document.layers) window.onload=startit
Nu har jeg skrevet: var servStamp, locStartStamp, inx, spacer, d = document; servStamp = <%=myTime%>; locStartStamp = new Date().getTime(); inx = 0; function myWatch() { var now, tims, mins, spacer, timeGone = new Date().getTime() - locStartStamp; now = new Date(servStamp+timeGone); tims = now.getHours(); mins = now.getMinutes(); secs = now.getSeconds();
if (tims<10) tims = "0" + tims; if (mins<10) mins = "0" + mins; if (secs<10) secs = "0" + secs;
spacer= (inx%2)? " " : ":";
scrollercontent[9] = "Klokken er nu "+ tims + spacer + mins + " " + secs+"."; return scrollercontent[9]
inx++; setTimeout("myWatch()",1000)
} myWatch();
Den viser klokken fint og uret virker, men det går ikke. scrollercontent[9] bliver ikke ændret
Det her burde virke: var scrollercontent=new Array(); scrollercontent[0] = "Kan altid defineres et andet sted"; scrollercontent[1] = ""; scrollercontent[2] = "OSV."; var inx=0; var spacer; function myWatch() { now = new Date(); tims = now.getHours(); mins = now.getMinutes(); secs = now.getSeconds(); if (tims<10) tims = "0" + tims; if (mins<10) mins = "0" + mins; if (secs<10) secs = "0" + secs; spacer= (inx%2)? " " : ":"; scrollercontent[1] = "Klokken er nu "+ tims + spacer + mins + " " + secs+"."; inx++; window.setInterval("myWatch()",1000);
} myWatch();
Det kan godt være jeg har lavet om på scriptet, men det virker for mig. Hvis du så skal have det til scrollercontent[9] så ændrer du bare på det - håber det virker denne gang :)
Du kan måske også bruge det gamle script - men da det kører med ASP, kunne jeg ikke rigtig teste det. Bare husk at kalde funktionen myWatch() på et tidspunkt.
Men altså at den kan vise en rigtig tid er meget fint. Det andet gør ikke så meget, hvis det ikke kan fungerer. Sekunder bliver ligeledes ikke opdateret hvert sekund
Du skal nok kalde window.onload = function() { startit(); setTimeout("myWatch()",1000); } til allersidst og bytte om på scrollercontent[0]='test'; var scrollercontent=new Array()
Endelig skal du huske at funktionen med uret bliver opdateret for hvert sekund. Derfor bliver dit kolon også kun opdateret hvert sekund og vil ikke blinke som planmæssigt. Løsningen kunne være at lave en ny funktion med kolon, som bliver opdateret hvert halve sekund (setInterval("etellerandet();",500);
Prøv også at kalde startit() for hvert sekund: window.onload = function() { // evt. startit(); setTimeout("startit();",1000); setTimeout("myWatch()",1000); }
Hmm for lidt siden viste den ikke arrayet to gange - prøv lige at gå tilbage fra hvor den virkede på det punkt.
Prøv derefter inde i myWatch funktionen at skrive: setTimeout("myWatch()",500); Det få kolonet til at blinke lidt mere (hvis du altså for resten til at virke).
sp >> Prøv lige at slette alle skovenborgs forslag og vend tilbage til det, jeg skrev til dig tidligere. Så er der en chance for at finde ud af, hvad der er galt :)
olebole >> Det har du ret i, men jeg kan desværre ikke teste hans script på min egen computer, da han jo bruger ASP og alt muligt som jo er noget serverorienteret.
Jeg vil have uret til at virke i scroller hvor jeg viser flere informationer. Jeg har et forum jeg skal bruge det til, hvor jeg skal vise antal indlæg som ikke er arkiveret og antal indlæg der er arkiveret bl.a. For at spare plads lægger jeg det hele i en scroller, da det ville fylde meget hvis jeg bare skrev det ud. Jeg ville også gerne tilføje uret.
Uret vil vise korrekt tid - men kun for det tidspunkt, hvor scrolleren 'kommer til' uret. Dvs, at uret ikke kan ændres, mens det vises ... så skal du vælge en anden scroller.
Det er med andre ord uden mening at vise sekunder - ligesom det blinkende kolon ikke giver mening. Du kan anvende en animeret gif i stedet.
Jeg ved godt, det var skovenborg, der bad dig ændre det - men det hjælper ikke det fjerneste. Det er pænt af ham at prøve at hjælpe, men forslagene gør ingen forskel.
Du opdaterer stadig uret hvert halve sekund .... det er der ingen grund til. Det belaster blot klientmaskinen dobbelt - uden grund :)
Ja jeg synes det er I andre dewr er for hurtige:-)
>Uret vil vise korrekt tid - men kun for det tidspunkt, hvor >scrolleren 'kommer til' uret. Dvs, at uret ikke kan ændres, mens det >vises ... så skal du vælge en anden scroller.
>Det er med andre ord uden mening at vise sekunder - ligesom det blinkende >kolon ikke giver mening. Du kan anvende en animeret gif i stedet.
Jep, det havde jeg på fornemmelsen. Sekunderne er bare for at det skulle se lidt smartere ud:-)
yups - men så skal 'scrolleren' laves på en helt anden måde. Den animerede gif giver stadig illusionen af, uret går for næsen af én :) Om det afviger med under 3 sekunder, betyder nok ikke det store i det virkelige liv ;o) /mvh
Jep skovenborg fik det til at virke. Værdien i variablen i array'et skal ændres og kom derfor ind i funktionen. Nu ser det ud til at virke - se uploadning:-)
Hvis jeg bytter om på kaldet af de 2 funktioner, så uret bliver kaldt først, så viser den ikke "scrollercontent[0]" 2 gange den første gang den viser array'et :-)
Jeg undskylder selvfølgelig mine lidt for forhastede kommentarer til sidst - og tak til olebole for at rette mine utilgivelige fejl (måske skulle du ha' givet ham nogle point også).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.