Avatar billede tre Nybegynder
28. marts 2003 - 11:47 Der er 17 kommentarer og
1 løsning

Skifte tekst automatisk hvert 5. sekund

Hej Eksperter,

er der nogen der har et eksempel på hvordan man får en linie tekst til at skifte automatisk hvert 5. sekund.

Teksten kommer fra en database der bare skal løbes igennem og starte forfra når der ikke er flere poster.


Kan det laves 100% i asp eller skal det kombineres med JavaScript?
Avatar billede dr-data Nybegynder
28. marts 2003 - 12:14 #1
jeg ville kombinere det med JAvaScript :D
Avatar billede medions Nybegynder
28. marts 2003 - 12:27 #2
Du kan ikke undgå at kombinere det med noget clientsided scripting, med mindre du vil refreshe din side hele tiden...
Her er hvad du gør:

Du laver i ASP en løkke som skyder al din data ned i en streng, som er kommasesperaret. Denne steng stopper du så ned i dit JavaScript, og får JavaScriptet til at Splitte din kommastreng og stoppe det ned i et Array.

Herefter laver du så et timeout på 5000 i JavaScript og får den til at lave et randomudtræk af dit Array for hver gang.

Det skulle være det...

//>Rune
Avatar billede tre Nybegynder
28. marts 2003 - 12:35 #3
Jeps... Har du liiige et eksempel??
Avatar billede medions Nybegynder
28. marts 2003 - 12:36 #4
tre> Du må prøve selv, så skal jeg hjælpe dig når du spørger...

//>Rune
Avatar billede medions Nybegynder
28. marts 2003 - 12:37 #5
Ellers skal pointsne sættes gævaldigt op i så fald!

//>Rune
Avatar billede tre Nybegynder
28. marts 2003 - 12:42 #6
Er 200 Ekstra fristende??
Avatar billede medions Nybegynder
28. marts 2003 - 12:43 #7
Yepzer..

//>Rune
Avatar billede tre Nybegynder
28. marts 2003 - 12:45 #8
Kan højest afsætte 200. Er det OK?
Avatar billede medions Nybegynder
28. marts 2003 - 12:47 #9
Helt ok

//>Rune
Avatar billede medions Nybegynder
28. marts 2003 - 12:57 #10
Sådan:

<%
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db1.mdb")
   
    strSQL = "SELECT * FROM tblNavne"
    Set objRs = objConn.Execute(strSQL)
   
    While Not objRs.EOF
        strRandom = strRandom & "'" & objRs("Navne") & "',"
    objRs.MoveNext()
    Wend
   
    intLength = Len(strRandom) -1
    strRandom = Left(strRandom, intLength)
%>
<html>
<head>
    <title></title>

<script language="JavaScript" type="text/javascript">
    intSpeed = 1000;
    function NewText() {
        var arrRandoms = new Array(<%= strRandom %>)
        var strWord = arrRandoms[Math.floor(Math.random()*arrRandoms.length)]
       
        document.getElementById("showText").innerHTML = strWord;
        setTimeout(NewText, intSpeed);
    }
   
</script>

</head>
<body onload="setTimeout('NewText();',intSpeed)">

<div id="showText"></div>

</body>
</html>

-databasen kan du downloade på www.itarkiv.dk/db1.mdb

//>Rune
Avatar billede medions Nybegynder
28. marts 2003 - 12:59 #11
Hvis du bruger denne virker den oxo i ældre browsere end IE 6.0!

<%
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db1.mdb")
   
    strSQL = "SELECT * FROM tblNavne"
    Set objRs = objConn.Execute(strSQL)
   
    While Not objRs.EOF
        strRandom = strRandom & "'" & objRs("Navne") & "',"
    objRs.MoveNext()
    Wend
   
    intLength = Len(strRandom) -1
    strRandom = Left(strRandom, intLength)
%>
<html>
<head>
    <title></title>

<script language="JavaScript" type="text/javascript">
    intSpeed = 1000;
    function NewText() {
        var arrRandoms = new Array(<%= strRandom %>)
        var strWord = arrRandoms[Math.floor(Math.random()*arrRandoms.length)]
       
        document.all["showText"].innerHTML = strWord;
        setTimeout(NewText, intSpeed);
    }
   
</script>

</head>
<body onload="setTimeout('NewText();',intSpeed)">

<div id="showText"></div>

</body>
</html>

//>Rune
Avatar billede tre Nybegynder
28. marts 2003 - 13:06 #12
Fedt nok! Det virker jo.

Det er ok den gør det random, men lidt træls at den ikke kører DB'ens poster igennem i rækkefølge.

Er det fordi det vil blive en uendelig løkke der får en timeout på et tidspunkt?
Avatar billede medions Nybegynder
28. marts 2003 - 13:08 #13
Hvad mener du med det er træls den ikke køre posterne igennem? -hvad er det du vil ha' den til da?

//>Rune
Avatar billede tre Nybegynder
28. marts 2003 - 13:10 #14
At den tager DB'en poster i rækkefølge og når alle er vist en gang, looper den og starter forfra.

Ligenu vælger den jo en tilfældig post.

Det resulterer i at en post ofte bliver valgt to eller tre gange i træk og hvis jeg nu sætter den til kun at skifte hvert 5. sekund, bliver det hurtigt til 10 eller 15 .. :-) (logisk nok)
Avatar billede medions Nybegynder
28. marts 2003 - 13:21 #15
Ahh ok.. Så gør sådan her:

<%
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db1.mdb")
   
    strSQL = "SELECT * FROM tblNavne"
    Set objRs = objConn.Execute(strSQL)
   
    While Not objRs.EOF
        strRandom = strRandom & "'" & objRs("Navne") & "',"
    objRs.MoveNext()
    Wend
   
    intLength = Len(strRandom) -1
    strRandom = Left(strRandom, intLength)
%>
<html>
<head>
    <title></title>

<script language="JavaScript" type="text/javascript">
    var intSpeed = 1000;
    intNo = 0;
    function NewText() {
        var arrRandoms = new Array(<%= strRandom %>)
       
        if (intNo != arrRandoms.length) {
            var strWord = arrRandoms[intNo]
            intNo = intNo + 1;
        } else {
            intNo = 0;
            var strWord = arrRandoms[intNo]
        }
       
        document.all["showText"].innerHTML = strWord;
        setTimeout(NewText, intSpeed);
    }
   
</script>

</head>
<body onload="setTimeout('NewText();',intSpeed)">

<div id="showText"></div>

</body>
</html>

//>Rune
Avatar billede tre Nybegynder
28. marts 2003 - 13:25 #16
Nu kommer de i rækkefølge, men jeg synes ikke rigtig at tidsangivelsen virker. En gang i mellem vises et punkt åbenbart flere gange i træk. Kan det ikke passe??
Avatar billede medions Nybegynder
28. marts 2003 - 13:26 #17
Well, jeg har sat den til at starte forfra hvis den har nået den sidste post!

-hvis du prøver at downloade databasen jeg har linket til så vil du kunne se det virker som det skal nu...

//>Rune
Avatar billede tre Nybegynder
28. marts 2003 - 13:31 #18
Ja - den looper fint.

Men først når den har været alle poster igennem.


hvis du sætter scriptet til 5 sekunder er problemet er bare at hvis den eksempelvis loader den samme post 3 gange i træk, vil den blive vist i 15 sekunder, hvor poster den kun loader en gang i random scriptet vil blive vist i 5 sekunder.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester