{"id":1563,"date":"2012-02-01T17:10:58","date_gmt":"2012-02-01T17:10:58","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=1563"},"modified":"2019-08-20T14:38:34","modified_gmt":"2019-08-20T14:38:34","slug":"cuenta-atras-con-javascript","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/","title":{"rendered":"Cuenta atr\u00e1s con JavaScript"},"content":{"rendered":"<p>En este blog he creado varios art\u00edculos que permiten crear una <strong>cuenta atr\u00e1s<\/strong> con <strong>JavaScript<\/strong> y otras librer\u00edas pero, en este art\u00edculo vas a descubrir la f\u00f3rmula definitiva para disponer de una <strong>cuenta atr\u00e1s<\/strong> en tu sitio web que no tiene ning\u00fan desperdicio.<\/p>\n<p>El script que estoy ilustrando no es muy complejo pero te va a ayudar much\u00edsimo con tus habilidades en <strong>JavaScript<\/strong> y vas a conocer como manejar el objeto Date que es el que permite trabajar con fechas: a\u00f1os, meses, d\u00edas, horas, minutos y segundos.<\/p>\n<p>Adem\u00e1s, tambi\u00e9n vas a conocer algunos aspectos o detalles del <strong>JavaScript<\/strong> moderno, como la declaraci\u00f3n de funciones o la creaci\u00f3n de objetos.<\/p>\n<p>Este c\u00f3digo de<strong> cuenta atr\u00e1s<\/strong> o regresiva lo puedes utilizar para hacer saber a los usuarios cuanto falta para el lanzamiento de un producto, cuanto falta para iniciar un descuento o cuanto falta para un evento, etc.<\/p>\n<p>Hay muchos usos para una cuenta regresiva.<\/p>\n<p>En el ejemplo en funcionamiento vas a poder ver varias cuentas regresivas en la que su fecha de fin se calcula de forma aleatoria.<\/p>\n<p>La inclusi\u00f3n de una cuenta regresiva en tu p\u00e1gina web es muy sencilla usando <strong>JavaScript<\/strong>.<\/p>\n<h3>Contenedor de la cuenta atr\u00e1s<\/h3>\n<p>En el cuerpo de la p\u00e1gina o dentro de la etiqueta &lt;body&gt; puedes agregar un contenedor para agregar la cuenta regresiva, como por ejemplo:<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;countdown1&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<h3>C\u00f3digo JavaScript para la cuenta regresiva<\/h3>\n<p>Crea un archivo <em>countdown.js<\/em> en tu proyecto para armar la l\u00f3gica de la cuenta regresiva e incluirlo en la cabecera o dentro del &lt;head&gt; de tu p\u00e1gina <strong>HTML<\/strong>:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;js\/countdown.js&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<p>Por temas de rendimiento, tambi\u00e9n puedes situar la inclusi\u00f3n de este archivo antes de la etiqueta de cierre &lt;\/body&gt;.<\/p>\n<p>El archivo <em>countdown.js<\/em> contiene el siguiente c\u00f3digo:<\/p>\n<div id=\"wpshdo_3\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_3\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_3\"><\/a><a id=\"wpshat_3\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_3\"  onClick=\"javascript:wpsh_toggleBlock(3)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_code(3)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_print(3)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_3\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\"><span class=\"kw2\">const<\/span> getTime <span class=\"sy0\">=<\/span> dateTo <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span>\n    let now <span class=\"sy0\">=<\/span> <span class=\"kw2\">new<\/span> Date<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n        time <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw2\">new<\/span> Date<span class=\"br0\">&#40;<\/span>dateTo<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">-<\/span> now <span class=\"sy0\">+<\/span> <span class=\"nu0\">1000<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">\/<\/span> <span class=\"nu0\">1000<\/span><span class=\"sy0\">,<\/span>\n        seconds <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"st0\">'0'<\/span> <span class=\"sy0\">+<\/span> Math.<span class=\"me1\">floor<\/span><span class=\"br0\">&#40;<\/span>time <span class=\"sy0\">%<\/span> <span class=\"nu0\">60<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">slice<\/span><span class=\"br0\">&#40;<\/span><span class=\"sy0\">-<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n        minutes <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"st0\">'0'<\/span> <span class=\"sy0\">+<\/span> Math.<span class=\"me1\">floor<\/span><span class=\"br0\">&#40;<\/span>time <span class=\"sy0\">\/<\/span> <span class=\"nu0\">60<\/span> <span class=\"sy0\">%<\/span> <span class=\"nu0\">60<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">slice<\/span><span class=\"br0\">&#40;<\/span><span class=\"sy0\">-<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n        hours <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span><span class=\"st0\">'0'<\/span> <span class=\"sy0\">+<\/span> Math.<span class=\"me1\">floor<\/span><span class=\"br0\">&#40;<\/span>time <span class=\"sy0\">\/<\/span> 3600 <span class=\"sy0\">%<\/span> 24<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">slice<\/span><span class=\"br0\">&#40;<\/span><span class=\"sy0\">-<\/span>2<span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>\n        days <span class=\"sy0\">=<\/span> Math.<span class=\"me1\">floor<\/span><span class=\"br0\">&#40;<\/span>time <span class=\"sy0\">\/<\/span> <span class=\"br0\">&#40;<\/span>3600 <span class=\"sy0\">*<\/span> 24<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <span class=\"kw1\">return<\/span> <span class=\"br0\">&#123;<\/span>\n        seconds<span class=\"sy0\">,<\/span>\n        minutes<span class=\"sy0\">,<\/span>\n        hours<span class=\"sy0\">,<\/span>\n        days<span class=\"sy0\">,<\/span>\n        time\n    <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n<span class=\"kw2\">const<\/span> countdown <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span>dateTo<span class=\"sy0\">,<\/span> element<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw2\">const<\/span> <span class=\"kw1\">item<\/span> <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span>element<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    <span class=\"kw2\">const<\/span> timerUpdate <span class=\"sy0\">=<\/span> setInterval<span class=\"br0\">&#40;<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span>\n        let currenTime <span class=\"sy0\">=<\/span> getTime<span class=\"br0\">&#40;<\/span>dateTo<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"kw1\">item<\/span>.<span class=\"me1\">innerHTML<\/span> <span class=\"sy0\">=<\/span> `\n            <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;row&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-2&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                    <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;countdown-container&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                        <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;number&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                            $<span class=\"br0\">&#123;<\/span>currenTime.<span class=\"me1\">days<\/span><span class=\"br0\">&#125;<\/span>\n                        <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                        <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;concept&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                            D\u00ed<span class=\"kw1\">as<\/span>\n                        <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                    <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-2&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                    <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;countdown-container&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                        <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;number&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                            $<span class=\"br0\">&#123;<\/span>currenTime.<span class=\"me1\">hours<\/span><span class=\"br0\">&#125;<\/span>\n                        <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                        <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;concept&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                            Horas\n                        <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                    <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-2&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                    <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;countdown-container&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                        <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;number&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                            $<span class=\"br0\">&#123;<\/span>currenTime.<span class=\"me1\">minutes<\/span><span class=\"br0\">&#125;<\/span>\n                        <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                        <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;concept&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                            Minutos\n                        <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                    <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-2&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                    <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;countdown-container&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                        <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;number&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                            $<span class=\"br0\">&#123;<\/span>currenTime.<span class=\"me1\">seconds<\/span><span class=\"br0\">&#125;<\/span>\n                        <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                        <span class=\"sy0\">&lt;<\/span>div <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;concept&quot;<\/span><span class=\"sy0\">&gt;<\/span>\n                            Segundos\n                        <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                    <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n                <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>\n            <span class=\"sy0\">&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span>`<span class=\"sy0\">;<\/span>\n&nbsp;\n        <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>currenTime.<span class=\"me1\">time<\/span> <span class=\"sy0\">&lt;=<\/span> 1<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n            clearInterval<span class=\"br0\">&#40;<\/span>timerUpdate<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"kw3\">alert<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Fin de la cuenta '<\/span><span class=\"sy0\">+<\/span> element<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n&nbsp;\n    <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> 1000<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span><\/pre><\/div><\/div>\n<p>Necesito la fecha l\u00edmite, es decir, cuando va a acabar la cuenta regresiva y la fecha actual. Hago la resta que retorna mili segundos y luego lo convierto a d\u00edas, horas, minutos y segundos de forma que pueda entender una persona. Por \u00faltimo, utilizo la funci\u00f3n <em>setInterval()<\/em> para actualizar la cuenta regresiva cada segundo.<\/p>\n<p>La funci\u00f3n <em>getTime()<\/em> recibe un par\u00e1metro, la fecha hasta la que se quiere hacer la <strong>cuenta atr\u00e1s<\/strong>. Esta funci\u00f3n retorna un objeto con el tiempo, d\u00edas, hora, minutos y segundos.<\/p>\n<p>La funci\u00f3n <em>countdown()<\/em> recibe 2 par\u00e1metros. La fecha en la que finaliza la <strong>cuenta atr\u00e1s<\/strong> y el elemento <strong>HTML<\/strong> que la contiene. Esta funci\u00f3n se encarga de localizar el elemento que contiene la cuenta regresiva y ejecutar cada segundo el visualizado del tiempo que falta para llegar a la fecha indicada.<\/p>\n<p>Cuando el tiempo llega a su fin, se imprime una alerta con un mensaje. En este punto, se podr\u00eda hacer todo lo que se te ocurra. Mostrar un mensaje en alg\u00fan contenedor, hacer desaparecer la cuenta regresiva e incluso hacer una llamada <strong>Ajax<\/strong> para actualizar algo en el servidor.<\/p>\n<p>El contenedor <strong>HTML<\/strong> se actualiza cada segundo con el contenido literal del tiempo que falta para llegar a al fecha indicada.<\/p>\n<h3>Algo de maquetaci\u00f3n CSS<\/h3>\n<p>En el caso del ejemplo en funcionamiento estoy usando <strong>Bootstrap<\/strong> y algunas reglas <strong>CSS<\/strong> que puedes ver a continuaci\u00f3n:<\/p>\n<div id=\"wpshdo_4\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_4\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_4\"><\/a><a id=\"wpshat_4\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_4\"  onClick=\"javascript:wpsh_toggleBlock(4)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_code(4)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_print(4)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_4\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"css\" style=\"font-family:monospace;\"><span class=\"re1\">.countdown-container<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">padding<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">20px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#222222<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">margin-bottom<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">20px<\/span><span class=\"sy0\">;<\/span>\n    -webkit-border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">6px<\/span><span class=\"sy0\">;<\/span>\n    -moz-border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">6px<\/span><span class=\"sy0\">;<\/span>\n    border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">6px<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.countdown-container<\/span> <span class=\"re1\">.number<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">font-size<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">32px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">text-align<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">center<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">padding-top<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">20px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#FFFFFF<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#000000<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">height<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">90px<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.countdown-container<\/span> <span class=\"re1\">.concept<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">font-size<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">28px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">text-align<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">center<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#000000<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><\/pre><\/div><\/div>\n<p>Obteniendo como resultado algo como lo siguiente:<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras-javascript.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7432\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras-javascript.png\" alt=\"\" width=\"747\" height=\"192\" srcset=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras-javascript.png 747w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras-javascript-300x77.png 300w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/a><\/p>\n<p>Como puedes comprobar, no me he esmerado demasiado en el dise\u00f1o pero, ya puedes observar que es totalmente personalizable.<\/p>\n<p>Si mejor\u00e1is este dise\u00f1o, enviar un comentario con el c\u00f3digo para que veamos m\u00e1s posibilidades.<\/p>\n<h3>Conclusi\u00f3n<\/h3>\n<p>He visto muchos c\u00f3digos para crear una <strong>cuenta atr\u00e1s<\/strong>, tambi\u00e9n un pu\u00f1ado de plugins pero, este c\u00f3digo me convence mucho ya que es <strong>JavaScript<\/strong> puro y muy sencillo de personalizar.<\/p>\n<p>No utiliza librer\u00edas ni plugins adicionales que suelen tener demasiadas opciones siendo archivos algo grandes que hacen que la p\u00e1gina tarde unos mili segundos m\u00e1s en cargar.<\/p>\n<p>Este c\u00f3digo pesa muy poco y, adem\u00e1s, si tienes conocimientos b\u00e1sicos sobre <strong>JavaScript<\/strong> y <strong>CSS<\/strong> tienes la posibilidad de personalizarlo completamente.<\/p>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/javascript\/cuenta-atras\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"fa fa-eye\"><\/i> Ver demo<\/a> <a class=\"btn btn-primary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/javascript\/cuenta-atras\/cuenta-atras.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n<p style=\"text-align: center;\"><em>Esta entrada ha sido actualizada el 20\/08\/2019.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descubre como crear una cuenta atr\u00e1s con JavaScript moderno sin el uso de librer\u00edas o plugins adicionales. Cuenta regresiva con JavaScript puro.<\/p>\n","protected":false},"author":1,"featured_media":7433,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[65],"class_list":["post-1563","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-countdown"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cuenta atr\u00e1s con JavaScript - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Descubre como crear una cuenta atr\u00e1s con JavaScript moderno sin el uso de librer\u00edas o plugins adicionales. Cuenta regresiva con JavaScript puro.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cuenta atr\u00e1s con JavaScript - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Descubre como crear una cuenta atr\u00e1s con JavaScript moderno sin el uso de librer\u00edas o plugins adicionales. Cuenta regresiva con JavaScript puro.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2012-02-01T17:10:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-20T14:38:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/\",\"name\":\"Cuenta atr\u00e1s con JavaScript - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras.png\",\"datePublished\":\"2012-02-01T17:10:58+00:00\",\"dateModified\":\"2019-08-20T14:38:34+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Descubre como crear una cuenta atr\u00e1s con JavaScript moderno sin el uso de librer\u00edas o plugins adicionales. Cuenta regresiva con JavaScript puro.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cuenta atr\u00e1s con JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cuenta atr\u00e1s con JavaScript - Jose Aguilar Blog","description":"Descubre como crear una cuenta atr\u00e1s con JavaScript moderno sin el uso de librer\u00edas o plugins adicionales. Cuenta regresiva con JavaScript puro.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Cuenta atr\u00e1s con JavaScript - Jose Aguilar Blog","og_description":"Descubre como crear una cuenta atr\u00e1s con JavaScript moderno sin el uso de librer\u00edas o plugins adicionales. Cuenta regresiva con JavaScript puro.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2012-02-01T17:10:58+00:00","article_modified_time":"2019-08-20T14:38:34+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/","url":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/","name":"Cuenta atr\u00e1s con JavaScript - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras.png","datePublished":"2012-02-01T17:10:58+00:00","dateModified":"2019-08-20T14:38:34+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Descubre como crear una cuenta atr\u00e1s con JavaScript moderno sin el uso de librer\u00edas o plugins adicionales. Cuenta regresiva con JavaScript puro.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2012\/02\/cuenta-atras.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/cuenta-atras-con-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Cuenta atr\u00e1s con JavaScript"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/1563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=1563"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/1563\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7433"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=1563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=1563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=1563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}