tipman Juniormester
30. januar 2021 - 12:36 Der er 5 kommentarer

Countdown fra php array

Jeg er rigtig dårlig til javascript og mangler lidt hjælp.

Jeg har lavet en hjemmeside i php. I den forbindelse har jeg lavet et array med nogle tider ala:
cd[1]['sekunder']=60;
cd[2]['sekunder']=88;
cd[3]['sekunder']=48;
cd[4]['sekunder']=56;

Jeg har brug for et javascript som først tager cd[1] og tæller ned fra 60 til 0, derefter skal den tage cd[2] og tælle ned fra 88 til 0 osv. Tæller i cd hedder $n fx.

Kan jeg få lidt hjælp til hvordan javascript laves til dette?

Det skal vises i HTML med
document.getElementById("elem8").innerHTML = xxxxx;

Hvis det laves med en function, hvor skal function så sættes ind?

Min hjemmeside har først noget php. Så kommer <HTML><BODY>, hvor jeg også har noget php kode på HTML siden. </BODY></HTML>.
Rune1983 Guru
01. februar 2021 - 08:59 #1
Har lige kort lavet dette. Måske du kan flette det ind i dit PHP til de værdier du har brug for.

<table>
    <tr>
        <td>Sat til <?php $AntalSekunder = 3; print $AntalSekunder; ?> sekunder</td>
        <td>
            <input type="hidden" id="idtriggerNext" value="<?php print $AntalSekunder; ?>" />
            <span id="idHour"></span>:
            <span id="idMin"></span>:
            <span id="idSec"></span>
        </td>
    </tr>
    <tr>
        <td>Sat til <?php $AntalSekunder = 5; print $AntalSekunder; ?> sekunder</td>
        <td>
            <input type="hidden" id="idtriggerNext2" value="<?php print $AntalSekunder; ?>" />
            <span id="idHour2"></span>:
            <span id="idMin2"></span>:
            <span id="idSec2"></span>
        </td>
    </tr>
    <tr>
        <td>Sat til <?php $AntalSekunder = 8; print $AntalSekunder; ?> sekunder</td>
        <td>
            <input type="hidden" id="idtriggerNext3" value="<?php print $AntalSekunder; ?>" />
            <span id="idHour3"></span>:
            <span id="idMin3"></span>:
            <span id="idSec3"></span>
        </td>
    </tr>
    <tr>
        <td>Sat til <?php $AntalSekunder = 4; print $AntalSekunder; ?> sekunder</td>
        <td>
            <input type="hidden" id="idtriggerNext4" value="<?php print $AntalSekunder; ?>" />
            <span id="idHour4"></span>:
            <span id="idMin4"></span>:
            <span id="idSec4"></span>
        </td>
    </tr>
</table>
<script>
    var idHour = "idHour";
    var idMin = "idMin";
    var idSec = "idSec";
    var idtriggerNext = "idtriggerNext";
   
    var c = 0;
    var t;
    var running = 1;
    var runningToEnd = 1;
    var Number = 2; // Next
   
    function timedCount(idHour,idMin,idSec,idtriggerNext,StartStopRunning,Number) {
       
        if(document.getElementById(idHour)){
           
        }
       
        if( StartStopRunning != running ) {
            running = StartStopRunning;
        }
       
        if( running == 1 && runningToEnd == 1 && document.getElementById(idHour) ){
            var n = c;
           
            if(n>=3600){
                var h = parseInt(n/3600);
                document.getElementById(idHour).innerHTML = h;
                n = n - (h*3600);
            }else{
                document.getElementById(idHour).innerHTML = "0";
            }
           
            if(n>=60){
                var m = parseInt(n/60);
                if(m<10){
                    var textMin = "0" + m;
                    document.getElementById(idMin).innerHTML = textMin;
                }else{
                    document.getElementById(idMin).innerHTML = m;
                }
                n = n - (m*60);
            }else{
                document.getElementById(idMin).innerHTML = "00";
            }
           
            if(n<10){
                var textSec = "0" + n;
                document.getElementById(idSec).innerHTML = textSec;
            }else{
                document.getElementById(idSec).innerHTML = n;
            }
           
            if( parseInt(document.getElementById(idtriggerNext).value) == c ){
                c = 0;
                var idHourNew = idHour.replace(/[0-9]/g, '');
                idHourNew = idHourNew.concat(Number);
                var idMinNew = idMin.replace(/[0-9]/g, '');
                idMinNew = idMinNew.concat(Number);
                var idSecNew = idSec.replace(/[0-9]/g, '');
                idSecNew = idSecNew.concat(Number);
                var idtriggerNextNew = idtriggerNext.replace(/[0-9]/g, '');
                idtriggerNextNew = idtriggerNextNew.concat(Number);
                Number++;
               
                if(document.getElementById(idHour)){ // Kigger om formodet næste id findes
                    t = setTimeout(function(){ timedCount(idHourNew,idMinNew,idSecNew,idtriggerNextNew,running,Number) }, 1000);
                    return;
                }else{
                    runningToEnd = 2; // Ending counter totally
                    return;
                }
               
            }else{
                c = c + 1;
                t = setTimeout(function(){ timedCount(idHour,idMin,idSec,idtriggerNext,running,Number) }, 1000);
            }
               
          }
    }
    timedCount(idHour,idMin,idSec,idtriggerNext,1,2);   
</script>
tipman Juniormester
02. februar 2021 - 08:27 #2
Ser godt ud Rune. Jeg kan se at jeg nok bare kan lave noget php, som skriver HTML koden (tabellen). Den skal skrives x antal gange. Hele SCRIPT delen ser det ud til at jeg kan skrive 1 gang og kalde mange gange. Men kan den let modificeres til at tælle ned i stedet for?
Rune1983 Guru
02. februar 2021 - 09:29 #3
Tænker godt den kan skrives om til at tælle ned i stedet. Men det ikke noget jeg har tid til at gøre desværre.
Hvad er det du skal skrive ud x antal gange? ... er det ikke nemmere med et for loop i PHP eller hvad er begrundelse for at anvende javascript?
tipman Juniormester
02. februar 2021 - 10:15 #4
Det skal bruges til start af kapsejlads. Man tæller ned fra x min til 5 min før start. Her skal gives information på skærmen. Fortsætter til 4 min før start, igen information. 1 min før start skal der ingen informeres. Ved 0 min information. Men nu begynder så en ny nedtælling som ovenfor til start 2,3,...X. Jeg har allerede regnet alle disse tider ud mellem hver start i php og lagt det i en array med information for hver nedtælling. Timeren skal kun vises 1 gang og udskiftes med de forskellige tider. Jeg synes js er lidt svært da det mindste komma forkert gør, at der ikke vises noget på skærmen. Og så skal det flettes sammen med php.
sukos Juniormester
03. februar 2021 - 11:44 #5
Det her brugte jeg til at give brugeren info om hvornår han/hun ville blive logget af, hvis der ingen aktivitet var fra brugern på siden.
Eller d.v.s. først i forbindelse med et lottoscript, hvornår trækningen skete, men senere til automatisk log af på en brugerside

function countd(allseconds,page) {

refresh = (!page ? 0 : 1);

var oneM = 60;
var oneH = (60*60);

var Htime = Math.floor(allseconds/oneH);
var Mtime = Math.floor((allseconds-(Htime*oneH))/oneM);
var Stime = Math.floor(allseconds-(Htime*oneH)-(Mtime*oneM));

document.getElementById("timetext").firstChild.nodeValue=(Htime<10?'0'+Htime:Htime)+' h '+(Mtime<10?'0'+Mtime:Mtime)+' m '+(Stime<10?'0'+Stime:Stime)+' s';


    if(allseconds){


        setTimeout("countd("+(allseconds-1)+","+refresh+");",1000);

    }else{

        if(refresh) {
        window.location.reload();
        }

        .documentgetElementById("timetext").firstChild.nodeValue='Draw is going on!';

    }

}
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.

Opret Preview

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





Premium
Sådan slipper danske it-selskaber afsted med at betale nul kroner i skat: "Der er klare tegn på, at spekulation i selskabsskat er udbredt"
En lang række it-selskaber på dansk jord betalte nul kroner i selskabsskat i løbet af 2019. Der findes flere årsager til - både mere eller mindre hæderlige - at selskaberne ikke poster penge i fælleskassen, lyder det fra global skatteekspert. Flere grunde er helt reelle mens andre er mere spekulative.
Computerworld
Endnu en tragisk ulykke med førerløs Tesla: Musk har store forventninger til ny software
En tragisk dødsulykke i USA i weekenden har sat forøget fokus på Teslas eksisterende semiautomatiske system og det kommende fuldautomatiske, der skal gøre bilerne helt selvkørende.
CIO
Har du rost din mellemleder i dag? Snart er de uddøde - og det er et tab
Computerworld mener: Mellemledere lever livet farligt: Topledelsen får konstant ideer med skiftende hold i virkeligheden, og moden går mod flade agile organisationer. Men mellemlederen er en overset hverdagens helt med et kæmpe ansvar. Her er min hyldest til den ofte latterliggjorte mellemleder.
Job & Karriere
"Vi var nødt til at sige til dem, at I er nødt til at sende ham hjem nu, for han begynder at knække"
"Vi var nødt til at sige til dem, at I er nødt til at sende ham hjem nu, for han begynder at knække"
White paper
Har du både dine applikationer og dit hoved i skyen?
Kan du nikke ja til en eller flere af disse situationer? • I bruger mange cloud-applikationer • I logger ind fra flere lokationer • I logger ind fra flere forskellige typer af devices Så kan du få stort udbytte af at læse dette whitepaper … Hver dag tilgår, navigerer og arbejder jeres medarbejdere i de applikationer, I har liggende i ”skyen”. Antallet af cloud-baserede applikationer stiger eksplosivt, så hvordan sikrer I ADGANGEN til dem og til de data, som applikationerne indeholder? Vel at mærke uden at gå på kompromis med BRUGERVENLIGHEDEN? Løsningen er Access Management, som er hovedtemaet for dette whitepaper.