{"id":7756,"date":"2022-05-25T21:27:30","date_gmt":"2022-05-25T21:27:30","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=7756"},"modified":"2022-05-26T04:22:26","modified_gmt":"2022-05-26T04:22:26","slug":"como-mover-una-barra-de-progreso-con-javascript","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/","title":{"rendered":"Como mover una barra de progreso con JavaScript"},"content":{"rendered":"<p>Las barras de progreso son un recurso que utilizo much\u00edsimo para hacerle saber al usuario que debe esperar a que un proceso se ejecute por completo antes de seguir interactuando con la p\u00e1gina.<\/p>\n<p>Un ejemplo claro ser\u00eda el proceso de una subida de archivos o una caga de informaci\u00f3n.<\/p>\n<p>Este tutorial es una continuaci\u00f3n de <a href=\"https:\/\/www.jose-aguilar.com\/blog\/barras-de-progreso-con-css\/\" target=\"_blank\" rel=\"noopener\">Barras de progreso con CSS<\/a> donde pod\u00e9is encontrar la estructura <strong>HTML<\/strong> de las barras de progreso y su maqueaci\u00f3n a trav\u00e9s de las hojas de estilos en cascada.<\/p>\n<p>Una vez tengas completa la visualizaci\u00f3n de la barra de progreso en tu sitio ya puedes volver aqu\u00ed donde te voy a ense\u00f1ar un truco para mover la barra de progreso despu\u00e9s de pulsar un bot\u00f3n.<\/p>\n<p>Es m\u00e1s f\u00e1cil de lo que parece. F\u00edjate a continuaci\u00f3n.<\/p>\n<h2>El bot\u00f3n de ejecuci\u00f3n de la barra de progreso<\/h2>\n<p>Cerca de la barra de progreso que ya tienes, puedes ubicar un bot\u00f3n como este:<\/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=\"javascript\" style=\"font-family:monospace;\"><span class=\"sy0\">&lt;<\/span>button id<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;executeButton&quot;<\/span> <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;btn btn-primary&quot;<\/span> onclick<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;moveProgressBar()&quot;<\/span><span class=\"sy0\">&gt;&lt;<\/span>i <span class=\"kw2\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;fa-solid fa-bars-progress&quot;<\/span><span class=\"sy0\">&gt;&lt;\/<\/span>i<span class=\"sy0\">&gt;<\/span> Ejecutar acci\u00f3n<span class=\"sy0\">&lt;\/<\/span>button<span class=\"sy0\">&gt;<\/span><\/pre><\/div><\/div>\n<p>Debe fijarte en el identificador del bot\u00f3n y en el atributo onclick donde estamos llamando a una funci\u00f3n llamada moveProgressBar().<\/p>\n<h2>La funci\u00f3n JavaScript que permite el movimiento de la barra de progreso<\/h2>\n<p>En el archivo <strong>JavaScript<\/strong> de tu proyecto puedes crear una funci\u00f3n de la siguiente manera:<\/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=\"javascript\" style=\"font-family:monospace;\"><span class=\"kw2\">function<\/span> moveProgressBar<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw2\">const<\/span> executeButton <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'executeButton'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    executeButton.<span class=\"me1\">disabled<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw2\">const<\/span> progressBar <span class=\"sy0\">=<\/span> document.<span class=\"me1\">getElementById<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'myBar'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw2\">const<\/span> progresBarText <span class=\"sy0\">=<\/span> progressBar.<span class=\"me1\">querySelector<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'.progress-bar-text'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    let percent <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span>\n    progressBar.<span class=\"me1\">style<\/span>.<span class=\"me1\">width<\/span> <span class=\"sy0\">=<\/span> percent <span class=\"sy0\">+<\/span> <span class=\"st0\">'%'<\/span><span class=\"sy0\">;<\/span>\n    progresBarText.<span class=\"me1\">textContent<\/span> <span class=\"sy0\">=<\/span> percent <span class=\"sy0\">+<\/span> <span class=\"st0\">'%'<\/span><span class=\"sy0\">;<\/span>\n&nbsp;\n    let progress <span class=\"sy0\">=<\/span> setInterval<span class=\"br0\">&#40;<\/span><span class=\"kw2\">function<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n        <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>percent <span class=\"sy0\">&gt;=<\/span> 100<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span>\n            clearInterval<span class=\"br0\">&#40;<\/span>progress<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            executeButton.<span class=\"me1\">disabled<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"kw3\">alert<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'fin'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>\n            percent <span class=\"sy0\">=<\/span> percent <span class=\"sy0\">+<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span> \n            progressBar.<span class=\"me1\">style<\/span>.<span class=\"me1\">width<\/span> <span class=\"sy0\">=<\/span> percent <span class=\"sy0\">+<\/span> <span class=\"st0\">'%'<\/span><span class=\"sy0\">;<\/span>\n            progresBarText.<span class=\"me1\">textContent<\/span> <span class=\"sy0\">=<\/span> percent <span class=\"sy0\">+<\/span> <span class=\"st0\">'%'<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span>\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><\/pre><\/div><\/div>\n<p>Cada vez que se pulsa este bot\u00f3n con identificador \u00abexecuteButton\u00bb, desactivo el\u00a0 mismo para evitar que vuelva a ser pulsado mientras la barra de progreso est\u00e1 en marcha.<\/p>\n<p>Identifico los elementos de la barra de progreso que me interesan.<\/p>\n<p>Defino una variable \u00abpercent\u00bb iniciando en 0.<\/p>\n<p>Establezco el porcentaje o valor de \u00abpercent\u00bb como ancho en modo porcentaje (%) de la barra de progreso.<\/p>\n<p>Y el mismo porcentaje se lo agrego al texto de la barra de progreso.<\/p>\n<p>Luego, defino una variable \u00abprogress\u00bb que contiene una llamada que se ejecuta cada 1 segundo con setInterval().<\/p>\n<p>Dentro de esta funci\u00f3n, compruebo que el valor de la variable \u00abpercent\u00bb no haya pasado de 100 para incrementar su valor en 1, ampliar el ancho de la barra de progreso en un 1% y mostrar el valor del progreso en el texto de la barra de progreso.<\/p>\n<p>Cuando la variable \u00abpercent\u00bb llega a 100 ser\u00e1 el fin del progreso. Por eso, limpio la ejecuci\u00f3n del intervalo, habilito de nuevo el bot\u00f3n y muestro una alerta de confirmaci\u00f3n.<\/p>\n<h2>Estructura HTML de la barra de progreso<\/h2>\n<p>Por si no te ha quedado claro el aspecto visual que puede tener tu barra de progreso, la estructura <strong>HTML<\/strong> podr\u00eda ser algo como lo que sigue:<\/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=\"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\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progress&quot;<\/span>&gt;<\/span>\n    <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;myBar&quot;<\/span> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progress-bar&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;width:0%;&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;progress-bar-text&quot;<\/span>&gt;<\/span>0%<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/span.html\"><span class=\"kw2\">span<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n<span class=\"sc2\">&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<h2>Maquetaci\u00f3n de la barra de progreso<\/h2>\n<p>Luego, puedes aplicarle los siguientes estilos:<\/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\">.progress<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">height<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">35px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">width<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\"><span class=\"nu0\">100<\/span>%<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">border<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">1px<\/span> <span class=\"kw2\">solid<\/span> <span class=\"re0\">#428bca<\/span><span class=\"sy0\">;<\/span>\n    border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">5px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#e6f3fa<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">margin-bottom<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">15px<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n<span class=\"re1\">.progress-bar<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">height<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\"><span class=\"nu0\">100<\/span>%<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#428bca<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">display<\/span><span class=\"sy0\">:<\/span> flex<span class=\"sy0\">;<\/span>\n    align-items<span class=\"sy0\">:<\/span> <span class=\"kw2\">center<\/span><span class=\"sy0\">;<\/span>\n    transition<span class=\"sy0\">:<\/span> <span class=\"kw1\">width<\/span> 0.25s<span class=\"sy0\">;<\/span>\n    border-radius<span class=\"sy0\">:<\/span> <span class=\"re3\">5px<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\n.progress-bar-<span class=\"kw2\">text<\/span> <span class=\"br0\">&#123;<\/span>\n    <span class=\"kw1\">margin-left<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">10px<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">font-weight<\/span><span class=\"sy0\">:<\/span> <span class=\"kw2\">bold<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"kw1\">color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#cce7f5<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span>\n&nbsp;\nbutton<span class=\"br0\">[<\/span>disabled<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;disabled&quot;<\/span><span class=\"br0\">]<\/span> <span class=\"br0\">&#123;<\/span>\n    opacity<span class=\"sy0\">:<\/span> <span class=\"nu0\">0.7<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">&#125;<\/span><\/pre><\/div><\/div>\n<h2>Resultado<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7751\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/barra-de-progreso-75.png\" alt=\"Barra de progreso al 75%\" width=\"1319\" height=\"48\" srcset=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/barra-de-progreso-75.png 1319w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/barra-de-progreso-75-300x11.png 300w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/barra-de-progreso-75-1024x37.png 1024w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/barra-de-progreso-75-768x28.png 768w\" sizes=\"auto, (max-width: 1319px) 100vw, 1319px\" \/><\/p>\n<h2>Conclusiones<\/h2>\n<p>Esta funci\u00f3n consigue muy bien su objetivo que, no es m\u00e1s que mover la barra de progreso en un 1% cada segundo.<\/p>\n<p>Esto significa que cada movimiento se realiza cada segundo y siempre que se ejecuta lo hace de la misma manera y tarda el mismo tiempo en ejecutarse.<\/p>\n<p>En realidad, el tiempo de ejecuci\u00f3n de las barras de progreso suele ser variable y asociado al tiempo real que tarde realmente una tarea o proceso.<\/p>\n<p>Por eso, en pr\u00f3ximos tutoriales relacionados ilustrar\u00e9 un ejemplo siempre y cuando me lo pid\u00e1is con concurrencia en los comentarios.<\/p>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/javascript\/move-progress-bar-me\/\" 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\/move-progress-bar-me\/move-progress-bar-me.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las barras de progreso son un recurso que utilizo much\u00edsimo para hacerle saber al usuario que debe esperar a que un proceso se ejecute por completo antes de seguir interactuando con la p\u00e1gina. Un ejemplo claro ser\u00eda el proceso de una subida de archivos o una caga de informaci\u00f3n. Este tutorial es una continuaci\u00f3n de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7761,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[162],"class_list":["post-7756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-progress-bar"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Como mover una barra de progreso con JavaScript - Jose Aguilar Blog<\/title>\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=\"Como mover una barra de progreso con JavaScript - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Las barras de progreso son un recurso que utilizo much\u00edsimo para hacerle saber al usuario que debe esperar a que un proceso se ejecute por completo antes de seguir interactuando con la p\u00e1gina. Un ejemplo claro ser\u00eda el proceso de una subida de archivos o una caga de informaci\u00f3n. Este tutorial es una continuaci\u00f3n de [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-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=\"2022-05-25T21:27:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-05-26T04:22:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/Como-mover-una-barra-de-progreso-con-JavaScript.png\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\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=\"4 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\/como-mover-una-barra-de-progreso-con-javascript\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/\",\"name\":\"Como mover una barra de progreso con JavaScript - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/Como-mover-una-barra-de-progreso-con-JavaScript.png\",\"datePublished\":\"2022-05-25T21:27:30+00:00\",\"dateModified\":\"2022-05-26T04:22:26+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/Como-mover-una-barra-de-progreso-con-JavaScript.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/Como-mover-una-barra-de-progreso-con-JavaScript.png\",\"width\":500,\"height\":500,\"caption\":\"Como mover una barra de progreso con JavaScript\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como mover una barra de progreso 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":"Como mover una barra de progreso con JavaScript - Jose Aguilar Blog","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":"Como mover una barra de progreso con JavaScript - Jose Aguilar Blog","og_description":"Las barras de progreso son un recurso que utilizo much\u00edsimo para hacerle saber al usuario que debe esperar a que un proceso se ejecute por completo antes de seguir interactuando con la p\u00e1gina. Un ejemplo claro ser\u00eda el proceso de una subida de archivos o una caga de informaci\u00f3n. Este tutorial es una continuaci\u00f3n de [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2022-05-25T21:27:30+00:00","article_modified_time":"2022-05-26T04:22:26+00:00","og_image":[{"width":500,"height":500,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/Como-mover-una-barra-de-progreso-con-JavaScript.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":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/","url":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/","name":"Como mover una barra de progreso con JavaScript - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/Como-mover-una-barra-de-progreso-con-JavaScript.png","datePublished":"2022-05-25T21:27:30+00:00","dateModified":"2022-05-26T04:22:26+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/Como-mover-una-barra-de-progreso-con-JavaScript.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/05\/Como-mover-una-barra-de-progreso-con-JavaScript.png","width":500,"height":500,"caption":"Como mover una barra de progreso con JavaScript"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/como-mover-una-barra-de-progreso-con-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Como mover una barra de progreso 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\/7756","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=7756"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/7756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7761"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=7756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=7756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=7756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}