Kezdőoldal » Számítástechnika » Weblapkészítés » Hogyan tudnék egy "Real-Time"...

Hogyan tudnék egy "Real-Time" visszaszámlálót csinálni?

Figyelt kérdés

Szóval, ha írok egy js scriptet ami elkezd 15től 0ig visszaszámolni és addig csökkenti egy elemnek a szélességét, ez mind szép és jó, csak ott a hiba, hogy ez mindig lefut ha felmegy az oldalra.

Hogyan lehetne azt megcsinálni, hogy ha elkezdi az idő 13 másodpercnél van és fellép valaki akkor innen fojtatódik? + Azt meglehet csinálni hogy felhasználó nélkül is fut a kód? szóval 15től 0ug elmegy vár 5mp-et és újraindul?



2017. márc. 26. 10:23
 1/7 anonim ***** válasza:
59%

<script>

var countdown = setInterval(

function(){

var date = new Date();

document.getElementById('countdown').innerHTML = (Math.max(15-date.getSeconds()%20,0));

},1000

);


</script>

<div id="countdown">

</div>

2017. márc. 26. 10:57
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
50%
Ehhez már kellene PHP is, hogy központilag beállítsd a szerveren, hogy hol tart a visszaszámlálás.
2017. márc. 27. 12:16
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
Köszi js-ben nem vagyok még jártas de nekem tetszik. :)
2017. márc. 27. 13:21
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:
Köszi :D nagyon pofás lett, ment a zöld :D
2017. márc. 27. 17:53
 5/7 A kérdező kommentje:
2# ezt hogyan tudnám megvalósítani?
2017. márc. 27. 18:20
 6/7 sharkxxx ***** válasza:
78%

Ez a timer onnan folytatódik, ahol járt amikor bezárták az oldalt.

A kliensen menti el a timer állapotát cookie-ban.

Ha biztonságosabban akarod megoldani, akkor a szerverre kell elmenteni a timer állapotát, és a felhasználó azonosítóját PHP-vel és Ajax-xal.


<!DOCTYPE html>

<html>

<head>

<script>


g_countdown = 0;


//exdays - When will the cookie expire. (in days)

function setCookie(cname,cvalue,exdays) {

var d = new Date();

d.setTime(d.getTime() + (exdays*24*60*60*1000));

var expires = "expires=" + d.toGMTString();

document.cookie = cname.toString() + "=" + cvalue.toString() + ";" + expires + ";path=/";

}


function getCookie(cname) {

var name = cname + "=";

var decodedCookie = decodeURIComponent(document.cookie);

var ca = decodedCookie.split(';');

for(var i = 0; i < ca.length; i++) {

var c = ca[i];

while (c.charAt(0) == ' ') {

c = c.substring(1);

}

if (c.indexOf(name) == 0) {

return c.substring(name.length, c.length);

}

}

return "";

}


function checkCookie() {

var l_last_countdown_str = getCookie("last_countdown");

if (l_last_countdown_str != "") {

g_countdown =

parseInt(l_last_countdown_str);

}


var countdowntimer = setInterval(

function(){

if ((g_countdown >= 0) && (g_countdown <= 15)) {

// Counting from 0 to 15.

document.getElementById('countdown').innerHTML = g_countdown.toString();

} else {

// Wait 5 seconds

document.getElementById('countdown').innerHTML = "Wait...";

}

setCookie("last_countdown", g_countdown.toString(), 2); // The cookie will expire in 2 days.

g_countdown += 1;

if (g_countdown >= 21) {

// Restart timer

g_countdown = 0;

}

},1000

);


}


</script>

</head>

<body onload="checkCookie()">


<div id="countdown">

</div>


</body>

</html>

2017. ápr. 1. 12:08
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

Nincs ehhez szükség a szerveroldalra, sütiben, vagy a local storage-ben el lehet menteni az állapotot, vagy a kezdés időpontját és lehet azzal dolgozni.


A setInterval függvény segítségével lehet periodikus végrehajtást indítani, amelyet clearInterval segítségével lehet megállítani. A setTimeout szintén hasznos lehet, hogy pontosan öt másodperc elteltével újraindítsd a számlálót.


Pontos megoldást nem szeretnék közreadni, egyrészt mert már elegendő mértékben megtették mások, másrészt pedig magad is jobban jársz, ha te is gondolkodsz egy kicsit rajta.

2017. ápr. 2. 19:00
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!