/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Skift tekst efter specifikt antal sekunder~
Fra : Ace


Dato : 24-06-09 00:23

Hejsa

Jeg har siddet og Googlet efter et script der kan "rotere"
tekstbeskeder i et div's inner.HTML, hvor hver besked vises efter
et specifikt antal sekunder.

Det eneste script jeg indtil videre har fundet, som minder om det
jeg leder efter, er dette:
<html>
<head>
<script type="text/javascript">
var shows = new Array(
"besked_00",
"besked_01",
"besked_02",
"besked_03",
"besked_04",
"besked_05",
"besked_06",
"besked_07",
"besked_08",
"besked_09",
"besked_10",
"besked_11",
"besked_12",
"besked_13",
"besked_14",
"besked_15",
"besked_16",
"besked_17",
"besked_18",
"besked_19",
"besked_20",
"besked_21",
"besked_22",
"besked_23",
"besked_24")
onload=function dispshows() {
var today = new Date()
var hours = today.getHours()
div.innerHTML=shows[hours]
setTimeout("dispshows()",1000)}
</script>
</head>
<body onLoad="dispshows()">
<div id="div"></div>
</body>
</html>

.. problemet med dette script er bare, at det kun roterer hver
besked én gang hver hele time.. og jeg har som sagt brug for at
kunne specificere præcis hvornår hver enkelte besked skal vises.

Jeg har ikke særlig meget styr på javascript, så håber der er
nogen der enten kender til sådan et script, eller evt. kan være
mig behjælpelig med at gennemskue hvordan det kan gøres?

Venligst
Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Martin (24-06-2009)
Kommentar
Fra : Martin


Dato : 24-06-09 00:32

Ace wrote:
> Hejsa
>
> Jeg har siddet og Googlet efter et script der kan "rotere"
> tekstbeskeder i et div's inner.HTML, hvor hver besked vises efter
> et specifikt antal sekunder.
>
> Det eneste script jeg indtil videre har fundet, som minder om det
> jeg leder efter, er dette:
> <html>
> <head>
> <script type="text/javascript">
> var shows = new Array(
> "besked_00",
> "besked_01",
> "besked_02",
> "besked_03",
> "besked_04",
> "besked_05",
> "besked_06",
> "besked_07",
> "besked_08",
> "besked_09",
> "besked_10",
> "besked_11",
> "besked_12",
> "besked_13",
> "besked_14",
> "besked_15",
> "besked_16",
> "besked_17",
> "besked_18",
> "besked_19",
> "besked_20",
> "besked_21",
> "besked_22",
> "besked_23",
> "besked_24")
> onload=function dispshows() {
> var today = new Date()
> var hours = today.getHours()
> div.innerHTML=shows[hours]
> setTimeout("dispshows()",1000)}
> </script>
> </head>
> <body onLoad="dispshows()">
> <div id="div"></div>
> </body>
> </html>
>

<script>
var next = 0;
function setText() {
if ( shows[next] ) {
document.getElementById('div').value = shows[next];
} else {
next = 0;
setText();
}

setTimeout('setText', 1000);

}

<body onload="setText()">

Martin (24-06-2009)
Kommentar
Fra : Martin


Dato : 24-06-09 00:33

Martin wrote:
> Ace wrote:
>> Hejsa
>>
>> Jeg har siddet og Googlet efter et script der kan "rotere"
>> tekstbeskeder i et div's inner.HTML, hvor hver besked vises efter
>> et specifikt antal sekunder.
>>
>> Det eneste script jeg indtil videre har fundet, som minder om det
>> jeg leder efter, er dette:
>> <html>
>> <head>
>> <script type="text/javascript">
>> var shows = new Array(
>> "besked_00",
>> "besked_01",
>> "besked_02",
>> "besked_03",
>> "besked_04",
>> "besked_05",
>> "besked_06",
>> "besked_07",
>> "besked_08",
>> "besked_09",
>> "besked_10",
>> "besked_11",
>> "besked_12",
>> "besked_13",
>> "besked_14",
>> "besked_15",
>> "besked_16",
>> "besked_17",
>> "besked_18",
>> "besked_19",
>> "besked_20",
>> "besked_21",
>> "besked_22",
>> "besked_23",
>> "besked_24")
>> onload=function dispshows() {
>> var today = new Date()
>> var hours = today.getHours()
>> div.innerHTML=shows[hours]
>> setTimeout("dispshows()",1000)}
>> </script>
>> </head>
>> <body onLoad="dispshows()">
>> <div id="div"></div>
>> </body>
>> </html>
>>
>
> <script>
> var next = 0;
> function setText() {
> if ( shows[next] ) {
> document.getElementById('div').value = shows[next];
> } else {
> next = 0;
> setText();
> }
>

next++;

> setTimeout('setText', 1000);
>
> }
>
> <body onload="setText()">

Glemte lige at tælle next op

Ace (24-06-2009)
Kommentar
Fra : Ace


Dato : 24-06-09 01:29

1000 tak for dit hurtige svar :)

Er det sådan her du mener scriptet skal se ud?:
<html>
<head>
<script type="text/javascript">
var shows = new Array(
"besked_00",
"besked_01",
"besked_02",
"besked_03",
"besked_04",
"besked_05",
"besked_06",
"besked_07",
"besked_08",
"besked_09",
"besked_10",
"besked_11",
"besked_12",
"besked_13",
"besked_14",
"besked_15",
"besked_16",
"besked_17",
"besked_18",
"besked_19",
"besked_20",
"besked_21",
"besked_22",
"besked_23",
"besked_24")
var next = 0;
function setText() {
if ( shows[next] ) {
div.innerHTML = shows[next];
} else {
var next = 0;
setText();
}
next++;
setTimeout('setText', 1000);
}
</script>
</head>
<body onload="setText()">
<div id="div"></div>
</body>
</html>

jeg forsøgte med document.getElementById('div').value men dér vises
slet ikke nogle beskeder på siden. Så Jeg prøvede med div.innerHTML
hvilket får besked_00 frem på skærmen.

Men scriptet roterer bare ikke beskederne (altså først besked_00, så
besked_01, så besked_02 osv.) og jeg ved godt jeg måske ikke
formulerede mig særlig tydeligt mht. hvad jeg mente med, at hver besked
skulle vises efter et specifikt antal sekunder. Men det jeg mente var,
at hver besked skulle tildeles et bestemt sekundtal, som en værdi på
hvornår den enkelte besked skal vises. Om det så er fra det øjeblik
siden loades, eller om det er antal sekunder fra den foregående besked
er vist, betyder ikke så meget. Bare man kan styre nøjagtigheden i de
enkelte beskeders visningstidspunkt.

Ved ikke om dette er umuligt.. håber jeg ikke det er :(

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (24-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 24-06-09 01:48

Ace sendte dette med sin computer:
> 1000 tak for dit hurtige svar :)
>
> Er det sådan her du mener scriptet skal se ud?:
> <html>
> <head>
> <script type="text/javascript">
> var shows = new Array(
> "besked_00",
> "besked_01",
> "besked_02",
> "besked_03",
> "besked_04",
> "besked_05",
> "besked_06",
> "besked_07",
> "besked_08",
> "besked_09",
> "besked_10",
> "besked_11",
> "besked_12",
> "besked_13",
> "besked_14",
> "besked_15",
> "besked_16",
> "besked_17",
> "besked_18",
> "besked_19",
> "besked_20",
> "besked_21",
> "besked_22",
> "besked_23",
> "besked_24")
> var next = 0;
> function setText() {
> if ( shows[next] ) {
> div.innerHTML = shows[next];
> } else {
> var next = 0;
> setText();
> }
> next++;
> setTimeout('setText', 1000);
> }
> </script>
> </head>
> <body onload="setText()">
> <div id="div"></div>
> </body>
> </html>
>
> jeg forsøgte med document.getElementById('div').value men dér vises
> slet ikke nogle beskeder på siden. Så Jeg prøvede med div.innerHTML
> hvilket får besked_00 frem på skærmen.
>
> Men scriptet roterer bare ikke beskederne (altså først besked_00, så
> besked_01, så besked_02 osv.) og jeg ved godt jeg måske ikke
> formulerede mig særlig tydeligt mht. hvad jeg mente med, at hver besked
> skulle vises efter et specifikt antal sekunder. Men det jeg mente var,
> at hver besked skulle tildeles et bestemt sekundtal, som en værdi på
> hvornår den enkelte besked skal vises. Om det så er fra det øjeblik
> siden loades, eller om det er antal sekunder fra den foregående besked
> er vist, betyder ikke så meget. Bare man kan styre nøjagtigheden i de
> enkelte beskeders visningstidspunkt.
>
> Ved ikke om dette er umuligt.. håber jeg ikke det er :(

Du skal over i noget med at definere et dobbelte array.

Det kan man ikke, men man kan vist nok gøre sådan:

var shows = Array();
shows[0] = mkShowElm( 'besked00', tid00);
shows[1] = mkShowElm( 'besked01', tid01);
osv... hvor tid00 er den tid besked00 skal vises
);

function mkShowElm( txt, t) {
this.tekst = txt;
this.tid = t;
}

funktionen der skifter skal så rettes nogenlunde sådan :
var next = 0;
function setText() {
if ( shows[next]) {
document.getElementById( 'div').innerHTML = shows[next].text;
setTimeout( 'setText', shows[ next].tid);
next++;
}
else {
next = 0;
setText();
}
}

Ikke testet, heller ikke checket med doc - det er muligvis også JScript
specifikt...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Birger Sørensen (24-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 24-06-09 01:53

Birger Sørensen har bragt dette til os:
> Ace sendte dette med sin computer:
>> 1000 tak for dit hurtige svar :)
>>
>> Er det sådan her du mener scriptet skal se ud?:
>> <html>
>> <head>
>> <script type="text/javascript"> var shows = new Array( "besked_00",
>> "besked_01", "besked_02", "besked_03", "besked_04", "besked_05",
>> "besked_06", "besked_07", "besked_08", "besked_09", "besked_10",
>> "besked_11", "besked_12", "besked_13", "besked_14", "besked_15",
>> "besked_16", "besked_17", "besked_18", "besked_19", "besked_20",
>> "besked_21", "besked_22", "besked_23", "besked_24") var next = 0; function
>> setText() { if ( shows[next] ) { div.innerHTML = shows[next]; } else { var
>> next = 0; setText();
>> }
>> next++;
>> setTimeout('setText', 1000);
>> } </script>
>> </head>
>> <body onload="setText()">
>> <div id="div"></div>
>> </body>
>> </html>
>>
>> jeg forsøgte med document.getElementById('div').value men dér vises
>> slet ikke nogle beskeder på siden. Så Jeg prøvede med div.innerHTML
>> hvilket får besked_00 frem på skærmen.
>>
>> Men scriptet roterer bare ikke beskederne (altså først besked_00, så
>> besked_01, så besked_02 osv.) og jeg ved godt jeg måske ikke
>> formulerede mig særlig tydeligt mht. hvad jeg mente med, at hver besked
>> skulle vises efter et specifikt antal sekunder. Men det jeg mente var,
>> at hver besked skulle tildeles et bestemt sekundtal, som en værdi på
>> hvornår den enkelte besked skal vises. Om det så er fra det øjeblik
>> siden loades, eller om det er antal sekunder fra den foregående besked
>> er vist, betyder ikke så meget. Bare man kan styre nøjagtigheden i de
>> enkelte beskeders visningstidspunkt.
>>
>> Ved ikke om dette er umuligt.. håber jeg ikke det er :(
>
> Du skal over i noget med at definere et dobbelte array.
>
> Det kan man ikke, men man kan vist nok gøre sådan:
>
> var shows = Array();
> shows[0] = mkShowElm( 'besked00', tid00);
> shows[1] = mkShowElm( 'besked01', tid01);
> osv... hvor tid00 er den tid besked00 skal vises
> );
>
> function mkShowElm( txt, t) {
> this.tekst = txt;
> this.tid = t;
> }
>
> funktionen der skifter skal så rettes nogenlunde sådan :
> var next = 0;
> function setText() {
> if ( shows[next]) {
> document.getElementById( 'div').innerHTML = shows[next].text;
> setTimeout( 'setText', shows[ next].tid);
> next++;
> }
> else {
> next = 0;
> setText();
> }
> }
>
> Ikke testet, heller ikke checket med doc - det er muligvis også JScript
> specifikt...
>
> Birger

Det er sent...

function mkShowElm( txt, t) {
this.tekst = txt;
this.tid = t;
return this;
}

måske skal der også stå
shows[0] = new( mkShowElm( 'besked00', tid00));

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Ace (24-06-2009)
Kommentar
Fra : Ace


Dato : 24-06-09 02:29

Birger Sørensen wrote:

> Det er sent...

Ja for søren da.. havde slet ikke set, at den var blevet så mange :)

> function mkShowElm( txt, t) {
> this.tekst = txt;
> this.tid = t;
> return this;
> }
>
> måske skal der også stå
> shows[0] = new( mkShowElm( 'besked00', tid00));

<html>
<head>
<script type="text/javascript">
var shows = Array();
shows[0] = new( mkShowElm( 'besked00', tid00));
shows[1] = new( mkShowElm( 'besked01', tid01));

function mkShowElm( txt, t) {
this.tekst = txt;
this.tid = t;
return this;
}

var next = 0;
function setText() {
if ( shows[next]) {
document.getElementById( 'div').innerHTML = shows[next].text;
setTimeout( 'setText', shows[ next].tid);
next++;
}
else {
next = 0;
setText();
}
}
</script>
</head>
<body onload="setText()">
<div id="div"></div>
</body>
</html>

.. den kommer desværre med samme fejlmeddelelse, men kan nu se at den skriver:"
'tid00' er ikke defineret ".
.. skal jeg i stedet for tid01 ændre til 1000, eller hvordan skal tiden
defineres?

Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (24-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 24-06-09 02:43

Ace formulerede spørgsmålet:
> Birger Sørensen wrote:
>
>> Det er sent...
>
> Ja for søren da.. havde slet ikke set, at den var blevet så mange :)
>
>> function mkShowElm( txt, t) {
>> this.tekst = txt;
>> this.tid = t;
>> return this;
>> }
>>
>> måske skal der også stå
>> shows[0] = new( mkShowElm( 'besked00', tid00));
>
> <html>
> <head>
> <script type="text/javascript">
> var shows = Array();
> shows[0] = new( mkShowElm( 'besked00', tid00));
> shows[1] = new( mkShowElm( 'besked01', tid01));
>
> function mkShowElm( txt, t) {
> this.tekst = txt;
> this.tid = t;
> return this;
> }
>
> var next = 0;
> function setText() {
> if ( shows[next]) {
> document.getElementById( 'div').innerHTML = shows[next].text;
> setTimeout( 'setText', shows[ next].tid);
> next++;
> }
> else {
> next = 0;
> setText();
> }
> }
> </script>
> </head>
> <body onload="setText()">
> <div id="div"></div>
> </body>
> </html>
>
> . den kommer desværre med samme fejlmeddelelse, men kan nu se at den
> skriver:" 'tid00' er ikke defineret ".
> . skal jeg i stedet for tid01 ændre til 1000, eller hvordan skal tiden
> defineres?
>
> Ace

tid00 (og de andre) skal være den tid du vil have den tilsvarende tekst
til at blive stående. Et tal.
tallet er i millisekunder - 1000 svarer til 1 sekund.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Ace (24-06-2009)
Kommentar
Fra : Ace


Dato : 24-06-09 02:13

Birger Sørensen wrote:

> Ikke testet, heller ikke checket med doc - det er muligvis også JScript
> specifikt...


Det gør ikke så meget hvis det kun er begrænset til JScript..

Umiddelbart lader du til at være med på hvad det er det drejer sig om :)

Håber det er sådan her det skal sættes sammen:
<html>
<head>
<script type="text/javascript">
var shows = Array();
shows[0] = mkShowElm( 'besked00', 3000);
shows[1] = mkShowElm( 'besked01', 5000);

function mkShowElm( txt, t) {
this.tekst = txt;
this.tid = t;
}

var next = 0;
function setText() {
if ( shows[next]) {
document.getElementById( 'div').innerHTML = shows[next].text;
setTimeout( 'setText', shows[ next].tid);
next++;
}
else {
next = 0;
setText();
}
}
</script>
</head>
<body onload="setText()">
<div id="div"></div>
</body>
</html>

Testen af scriptet, i den seneste version af IE, viser imidlertid intet
resultat.. men giver en fejlmeddelelse hvori der står "Stack overflow at
line: 22".
Aner desværre bare ikke hvad det betyder :(

Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (24-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 24-06-09 02:40

Ace skrev den 24-06-2009:
> Birger Sørensen wrote:
>
>> Ikke testet, heller ikke checket med doc - det er muligvis også JScript
>> specifikt...
>
>
> Det gør ikke så meget hvis det kun er begrænset til JScript..
>
> Umiddelbart lader du til at være med på hvad det er det drejer sig om :)
>
> Håber det er sådan her det skal sættes sammen:
> <html>
> <head>
> <script type="text/javascript">
> var shows = Array();
> shows[0] = mkShowElm( 'besked00', 3000);
> shows[1] = mkShowElm( 'besked01', 5000);
>
> function mkShowElm( txt, t) {
> this.tekst = txt;
> this.tid = t;
> }
>
> var next = 0;
> function setText() {
> if ( shows[next]) {
> document.getElementById( 'div').innerHTML = shows[next].text;
> setTimeout( 'setText', shows[ next].tid);
> next++;
> }
> else {
> next = 0;
> setText();
> }
> }
> </script>
> </head>
> <body onload="setText()">
> <div id="div"></div>
> </body>
> </html>
>
> Testen af scriptet, i den seneste version af IE, viser imidlertid intet
> resultat.. men giver en fejlmeddelelse hvori der står "Stack overflow at
> line: 22".
> Aner desværre bare ikke hvad det betyder :(
>
> Ace

Det er fordi new mangler. Der skal stå sådan :

var shows = Array();
shows[0] = new mkShowElm( 'besked00', 3000);
shows[1] = new mkShowElm( 'besked01', 5000);

(uden new oprettes ikke et object, og begge entries vil være tomme. Det
giver et overflow, fordi setTxt() bliver ved med at kalde sig selv.)

til gengæld, skal det så være nok at skrive
function mkShowElm( txt, t) {
this.tekst = txt;
this.tid = t;
}
(altså uden return this;)

hvis du bytter
if ( shows[next]) {
med
if ( next < shows.length) {
akulle fejlen gå væk, så længe der er are et element i arrayet - og du
har to her, så det burde være godt nok.
Til gengæld vil du få fejl når du forsøger at hente teksten, hvis
elementet er tomt. At løse det kræver endnu en if, og det er lidt som
at vælge det mindste af to onder.
Igen - brug new, og elementerne er ikke tomme, og der skulle ikke være
problemer. Så kan du bruge den if du syntes ser pænest ud

Birger

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Ace (24-06-2009)
Kommentar
Fra : Ace


Dato : 24-06-09 02:54

Birger Sørensen wrote:

> Det er fordi new mangler. Der skal stå sådan :
>
> var shows = Array();
> shows[0] = new mkShowElm( 'besked00', 3000);
> shows[1] = new mkShowElm( 'besked01', 5000);
>
> (uden new oprettes ikke et object, og begge entries vil være tomme. Det
> giver et overflow, fordi setTxt() bliver ved med at kalde sig selv.)
>
> til gengæld, skal det så være nok at skrive
> function mkShowElm( txt, t) {
> this.tekst = txt;
> this.tid = t;
> }
> (altså uden return this;)
>
> hvis du bytter
> if ( shows[next]) {
> med
> if ( next < shows.length) {
> akulle fejlen gå væk, så længe der er are et element i arrayet - og du
> har to her, så det burde være godt nok.
> Til gengæld vil du få fejl når du forsøger at hente teksten, hvis
> elementet er tomt. At løse det kræver endnu en if, og det er lidt som
> at vælge det mindste af to onder.
> Igen - brug new, og elementerne er ikke tomme, og der skulle ikke være
> problemer. Så kan du bruge den if du syntes ser pænest ud

Kunne godt være man skulle få lidt søvn og kigge på det i morgen med friske
øjne :)

<html>
<head>
<script type="text/javascript">
var shows = Array();
shows[0] = new mkShowElm('besked00', 3000);
shows[1] = new mkShowElm('besked01', 5000);

function mkShowElm(txt, t) {
this.tekst = txt;
this.tid = t;
}

var next = 0;
function setText() {
if ( next < shows.length) {
document.getElementById( 'div').innerHTML = shows[next].text;
setTimeout('setText', shows[next].tid);
next++;
}
else {
next = 0;
setText();
}
}
</script>
</head>
<body onload="setText()">
<div id="div"></div>
</body>
</html>

.. med scriptet stående som det gør her, dukker der som du rigtig nok siger,
ikke nogle fejlmeddelelser op.. men i div'en står der nu blot undefined, og
altså ikke besked00.

Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (24-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 24-06-09 09:36

Ace formulerede onsdag:
8X
> function mkShowElm(txt, t) {
> this.tekst = txt;
> this.tid = t;
> }
>
> var next = 0;
> function setText() {
> if ( next < shows.length) {
> document.getElementById( 'div').innerHTML = shows[next].text;
> setTimeout('setText', shows[next].tid);
> next++;
> }
> else {
> next = 0;
> setText();
> }
> }

God morgen.
Prøv med

document.getElementById( 'div').innerHTML = shows[next].tekst;

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Birger Sørensen (24-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 24-06-09 09:51

<head>
<script type="text/javascript">
var shows = Array();
shows[0] = new mkShowElm( 'besked00', 3000);
shows[1] = new mkShowElm( 'besked01', 5000);
shows[2] = new mkShowElm( 'Så virker det', 2000);
shows[3] = new mkShowElm( 'Så du det?', 500);

function mkShowElm(txt, t) {
   this.tekst = txt;
   this.tid = t;
   }

var next = 0;
function setText() {
   if ( next < shows.length) {
      document.getElementById( 'div').innerHTML = shows[next].tekst;
      setTimeout( setText, shows[next].tid);
      next++;
      }
   else {
      next = 0;
      setText();
      }
   }
</script>
</head>
<body onload="setText()">
<div id="div"></div>
</body>
</html>

Virker i IE8 og FF.
HTML'en validerer ikke, men scriptet kører.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Ace (24-06-2009)
Kommentar
Fra : Ace


Dato : 24-06-09 10:07

Birger Sørensens klarsyn affødte:
> <head>
> <script type="text/javascript">
> var shows = Array();
> shows[0] = new mkShowElm( 'besked00', 3000);
> shows[1] = new mkShowElm( 'besked01', 5000);
> shows[2] = new mkShowElm( 'Så virker det', 2000);
> shows[3] = new mkShowElm( 'Så du det?', 500);
>
> function mkShowElm(txt, t) {
>    this.tekst = txt;
>    this.tid = t;
>    }
>
> var next = 0;
> function setText() {
>    if ( next < shows.length) {
>       document.getElementById( 'div').innerHTML =
shows[next].tekst;
>       setTimeout( setText, shows[next].tid);
>       next++;
>       }
>    else {
>       next = 0;
>       setText();
>       }
>    }
> </script>
> </head>
> <body onload="setText()">
> <div id="div"></div>
> </body>
> </html>
>
> Virker i IE8 og FF.
> HTML'en validerer ikke, men scriptet kører.

Go'morgen Birger, og tusind tak for din store hjælp :)
Dit script fungerer perfekt, og jeg forsikrer dig om at du
selvfølgelig vil komme til at stå som creator af scriptet når det
tages i brug.
*thumbs up*

Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (24-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 24-06-09 10:25

Ace:
> Birger Sørensens klarsyn affødte:
>> <head>
>> <script type="text/javascript">
>> var shows = Array();
>> shows[0] = new mkShowElm( 'besked00', 3000);
>> shows[1] = new mkShowElm( 'besked01', 5000);
>> shows[2] = new mkShowElm( 'Så virker det', 2000);
>> shows[3] = new mkShowElm( 'Så du det?', 500);
>>
>> function mkShowElm(txt, t) {
>>    this.tekst = txt;
>>    this.tid = t;
>>    }
>>
>> var next = 0;
>> function setText() {
>>    if ( next < shows.length) {
>>       document.getElementById( 'div').innerHTML = shows[next].tekst;
>>       setTimeout( setText, shows[next].tid);
>>       next++;
>>       }
>>    else {
>>       next = 0;
>>       setText();
>>       }
>>    }
>> </script>
>> </head>
>> <body onload="setText()">
>> <div id="div"></div>
>> </body>
>> </html>
>>
>> Virker i IE8 og FF.
>> HTML'en validerer ikke, men scriptet kører.
>
> Go'morgen Birger, og tusind tak for din store hjælp :)
> Dit script fungerer perfekt, og jeg forsikrer dig om at du
> selvfølgelig vil komme til at stå som creator af scriptet når det
> tages i brug.
> *thumbs up*
>
> Ace

Selv tak.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Birger Sørensen (24-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 24-06-09 01:30

Martin formulerede spørgsmålet:
> Ace wrote:
>> Hejsa
>>
>> Jeg har siddet og Googlet efter et script der kan "rotere"
>> tekstbeskeder i et div's inner.HTML, hvor hver besked vises efter
>> et specifikt antal sekunder.
>>
>> Det eneste script jeg indtil videre har fundet, som minder om det
>> jeg leder efter, er dette:
>> <html>
>> <head>
>> <script type="text/javascript">
>> var shows = new Array(
>> "besked_00",
>> "besked_01",
>> "besked_02",
>> "besked_03",
>> "besked_04",
>> "besked_05",
>> "besked_06",
>> "besked_07",
>> "besked_08",
>> "besked_09",
>> "besked_10",
>> "besked_11",
>> "besked_12",
>> "besked_13",
>> "besked_14",
>> "besked_15",
>> "besked_16",
>> "besked_17",
>> "besked_18",
>> "besked_19",
>> "besked_20",
>> "besked_21",
>> "besked_22",
>> "besked_23",
>> "besked_24")
>> onload=function dispshows() {
>> var today = new Date()
>> var hours = today.getHours()
>> div.innerHTML=shows[hours]
>> setTimeout("dispshows()",1000)}
>> </script>
>> </head>
>> <body onLoad="dispshows()">
>> <div id="div"></div>
>> </body>
>> </html>
>>
>
> <script>
> var next = 0;
> function setText() {
> if ( shows[next] ) {
> document.getElementById('div').value = shows[next];
> } else {
> next = 0;
> setText();
> }
>
> setTimeout('setText', 1000);
>
> }
>
> <body onload="setText()">

>> onload=function dispshows() {
>> var today = new Date()
>> var hours = today.getHours()
>> div.innerHTML=shows[hours]
>> setTimeout("dispshows()",1000)}

vil så være overflødigt i den oprindelige kode.
(og next skal tælles op)
Ellers vil der være dobbelt onload assignment. Og det vil vist være den
oprindelige der vinder - eller også er det omvendt. Noget med defer, og
hvårnår scripts køres...
Den oprindelige vil for øvrigt kun virke i IE, da div ikke kendes i de
andre. Teknikken med at et element kendes i script på dets id, er
specifik for JScript. I javascript skal (DOM-)funktionen
document.getElementById(); anvendes.
Den oprindelige kode mangler desuden en god mængde ; for at kunne
kaldes pæn.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste