Valaki át írná nekem ezt hogy ne induljon újra ha frissítek az oldalra, az időt egy fixtől számoljon vissza, pl. : beírom 2014.11.11 20:30:00, és akkor ér nullára amikor adott nap 20:30:00 lesz?
/*
* jquery-counter plugin
*
* Copyright (c) 2009 Martin Conte Mac Donell <Reflejo@gmail.com>
* Dual licensed under the MIT and GPL licenses.
* [link]
*/
jQuery.fn.countdown = function(userOptions)
{
// Default options
var options = {
stepTime: 60,
// startTime and format MUST follow the same format.
// also you cannot specify a format unordered (e.g. hh:ss:mm is wrong)
format: "hh:mm:ss",
startTime: "12:32:55",
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
timerEnd: function(){},
image: "digits.png"
};
var digits = [], interval;
// Draw digits in given container
var createDigits = function(where)
{
var c = 0;
// Iterate each startTime digit, if it is not a digit
// we'll asume that it's a separator
for (var i = 0; i < options.startTime.length; i++)
{
if (parseInt(options.startTime[i]) >= 0)
{
elem = $('<div id="cnt_' + i + '" class="cntDigit" />').css({
height: options.digitHeight * options.digitImages * 10,
float: 'left', background: 'url(\'' + options.image + '\')',
width: options.digitWidth});
digits.push(elem);
margin(c, -((parseInt(options.startTime[i]) * options.digitHeight *
options.digitImages)));
digits[c].__max = 9;
// Add max digits, for example, first digit of minutes (mm) has
// a max of 5. Conditional max is used when the left digit has reach
// the max. For example second "hours" digit has a conditional max of 4
switch (options.format[i]) {
case 'h':
digits[c].__max = (c % 2 == 0) ? 2: 9;
if (c % 2 == 0)
digits[c].__condmax = 4;
break;
case 'd':
digits[c].__max = 9;
break;
case 'm':
case 's':
digits[c].__max = (c % 2 == 0) ? 5: 9;
}
++c;
}
else
elem = $('<div class="cntSeparator"/>').css({float: 'left'})
.text(options.startTime[i]);
where.append(elem)
}
};
// Set or get element margin
var margin = function(elem, val)
{
if (val !== undefined)
return digits[elem].css({'marginTop': val + 'px'});
return parseInt(digits[elem].css('marginTop').replace('px', ''));
};
// Makes the movement. This is done by "digitImages" steps.
var moveStep = function(elem)
{
digits[elem]._digitInitial = -(digits[elem].__max * options.digitHeight * options.digitImages);
return function _move() {
mtop = margin(elem) + options.digitHeight;
if (mtop == options.digitHeight) {
margin(elem, digits[elem]._digitInitial);
if (elem > 0) moveStep(elem - 1)();
else
{
clearInterval(interval);
for (var i=0; i < digits.length; i++) margin(i, 0);
options.timerEnd();
return;
}
if ((elem > 0) && (digits[elem].__condmax !== undefined) &&
(digits[elem - 1]._digitInitial == margin(elem - 1)))
margin(elem, -(digits[elem].__condmax * options.digitHeight * options.digitImages));
return;
}
margin(elem, mtop);
if (margin(elem) / options.digitHeight % options.digitImages != 0)
setTimeout(_move, options.stepTime);
if (mtop == 0) digits[elem].__ismax = true;
}
};
$.extend(options, userOptions);
this.css({height: options.digitHeight, overflow: 'hidden'});
createDigits(this);
interval = setInterval(moveStep(digits.length - 1), 1000);
};
Itt egy rövidebb kód:
<script src="//code.jquery.com/jquery.js"></script>
<script src="//cdn.rawgit.com/hilios/jQuery.countdown/2.0.4/dist/jquery.countdown.min.js"></script>
<span id="clock"></span>
<script type="text/javascript">
$('#clock').countdown("2014/12/31 24:00", function(event) {var totalHours = event.offset.totalDays * 24 + event.offset.hours;$(this).html(event.strftime(totalHours + ' hr %M min %S sec'));});
</script>
A visszaszámolás a countdown utáni időpontig tart. CSS-ben meg formázhatod a számlálót.
Kivette a rendszer a http%3A-ot a JS forráscímekből, úgy meg nem fog működni.
A végén a "...hr ...min ...sec" törölhető/átírható.
Ez most így egy szimpla visszaszámláló, ami az elején megadott startTime: "12:32:55" -től számol vissza?
Ekkor a "//Default options" sor elé ezt szúrd be:
var cel_datum=new Date("2014/11/13 12:00:30");
var aktualis_datum=new Date;
var ezredmasodpercek=cel_datum.getTime()-aktualis_datum.getTime();
var masodpercek=Math.floor(ezredmasodpercek/1000)%60;
var percek=Math.floor(ezredmasodpercek/1000/60)%60;
var orak=Math.floor(ezredmasodpercek/1000/3600);
és a startTime: "12:32:55", sort erre cseréld le:
startTime: orak+":"+percek+":"+masodpercek,
valamint a format: "hh:mm:ss", sor is legyen inkább ilyen:
format: "hhhh:mm:ss",
Ugyanis ha több mint egy hónapot kell visszaszámolni, akkor az több, mint 1000 órát jelent, így két számjegylehet hogy hibát ad.
Kimaradt:
A cel_datum a visszaszámolás végdátumát jelenti, szóval azt neked kell majd pontosítani de szerintem úgyis kitaláltad volna.
Esetleg a format: "hh:mm:ss", sort az órák számának függvényében dinamikusan is meg lehet adni:
format: (orak<100?"hh":(orak<1000?"hhh":"hhhh"))+":mm:ss",
Így ha 100-nál kisebb akkor csak "hh:mm:ss", ha 1000-nél kisebb akkor "hhh:mm:ss" egyébként meg "hhhh:mm:ss".
Sajnos nem működik! :(
Ezt raktam a .js file-ba:
var cel_datum=new Date("2014/11/14 12:00:30");
var aktualis_datum=new Date;
var ezredmasodpercek=cel_datum.getTime()_aktualis_datum.getTime(
);
var masodpercek=Math.floor(ezredmasodpercek/1000)%60;
var percek=Math.floor(ezredmasodpercek/1000/60)%60;
var orak=Math.floor(ezredmasodpercek/1000/3600);
// Default options
var options = {
stepTime: 60,
// startTime and format MUST follow the same format.
// also you cannot specify a format unordered (e.g. hh:ss:mm is wrong)
format: "hh:mm:ss",
startTime: "orak+":"+percek+":"+masodpercek"
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
timerEnd: function(){},
image: "digits.png"
};
ezt pedig az index.html-be:
<script type="text/javascript" src="javascripts/jquery.countdown.js"></script>
<script type="text/javascript">
$(function(){
$('#counter').countdown({
image: 'images/digits.png',
startTime: "orak+":"+percek+":"+masodpercek"
});
});
</script>
Nem jelenik meg! Rosszul csináltam valamit?
Az eddigi válaszaid nagyon szépen köszönöm!
var ezredmasodpercek=cel_datum.getTime()_aktualis_datum.getTime();
Ebben a sorban számolja ki a cél_dátum és az aktuális_dátum közötti időt a visszaszámoláshoz, de nem kivonásjel hanem aláhúzásjel van, biztos csak elgépelés.
Kimaradt:
Néha válaszadáskor a gyakorikerdesek.hu rendszere csinál plusz sortöréseket, például a jelzett sor végén a bezáró zárójel és pontosvessző is átkerült a következő sorba. Ez is okozhat hibát, ilyeneket nyugodtan javíts ki.
Még egy:
startTime: "orak+":"+percek+":"+masodpercek"
Ennek a sornak a végéról egy vessző hiányzik. Az options rekordban az egyes elemeket vessző választja el, a többi sornál látható.
Ha ennyire kevés a tapasztalatod a programozásban, akkor érdemesebb sokkal rövidebb/egyszerűbb kódokat használni, mint amilyet először írtam.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!