Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

482
Views
¿Cómo guardar un nuevo color de fondo a través de `colorpicker` en `localStorage`?

Sé que hay muchas preguntas similares. Las probé pero realmente no puedo incorporarlas a mi proyecto.

Estoy tratando de guardar en localStorage el nuevo background-color seleccionado con el colorpicker de color nativo.

Estoy casi allí, pero no puedo entender cómo hacer que funcione.

Por favor, vea mi código hasta ahora:

 function changeBgColor(color) { if (color) window.localStorage.setItem('bgColor', color); else if (!(color = window.localStorage.getItem('bgColor'))) return; document.getElementById('colorpicker').addEventListener('input', function() { var elements = document.getElementsByClassName("card-bg") for (var i = 0; i < elements.length; i++) { elements[i].style.background = this.value; } }) } window.addEventListener('DOMContentLoaded', () => changeBgColor());
 .card1 { width: 200px; height: 200px; background-color: #222; margin: 10px 0 0 0; }
 <div class="card1 card-bg">Set A</div> <div class="card1 card-bg">Set A</div> <div class="card1 card-bg">Set A</div> <br> <input type="color" id="colorpicker" onselect="changeBgColor();">

Las características importantes para mí son:

  1. Para cambiar el color de fondo usando input="color"
  2. Use el selector class ya que tengo varios divs a los que quiero apuntar con la misma entrada
  3. Guarde el valor en localStorage

Eso es todo realmente. Solo necesito averiguar la parte donde el valor se guarda en localStorage .

Después de hacer que esto funcione, tendré que replicarlo para un conjunto diferente de divs.

Gracias de antemano por cualquier ayuda.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Si el cheque tuviera = asignación en lugar de == comparación

Aquí hay un fragmento refactorizado que funciona:

 let pretend_local_storage = null function setupBackgroundColorChange() { const elements = document.querySelectorAll(".card-bg") document.getElementById('colorpicker').addEventListener('input', function(e) { color = e.target.value if (color === pretend_local_storage) return pretend_local_storage = color elements.forEach((element) => element.style.background = color) }) } window.onDOMContentLoaded = setupBackgroundColorChange();
 .card1 { width: 200px; height: 200px; background-color: #222; margin: 10px 0 0 0; }
 <div class="card1 card-bg">Set A</div> <div class="card1 card-bg">Set A</div> <div class="card1 card-bg">Set A</div> <br> <input type="color" id="colorpicker" onselect="changeBgColor();">

Ejemplo de almacenamiento local:

 localStorage.getItem('bgColor', null) function setupBackgroundColorChange() { const elements = document.querySelectorAll(".card-bg") setColor(elements, localStorage.getItem('bgColor', '#000')) document.getElementById('colorpicker').addEventListener('input', function (e) { color = e.target.value if (color === localStorage.getItem('bgColor')) return localStorage.setItem('bgColor', color) setColor(elements, color) }) } function setColor(elements, color) { elements.forEach((element) => element.style.background = color) } window.onDOMContentLoaded = setupBackgroundColorChange();
about 4 years ago · Juan Pablo Isaza Report

0

En primer lugar, usaría el activador de cambio. Para ser honesto, no necesita ninguna condición dentro de la función. puede establecer el color en localStorage y eso es todo.

 /* this lines check if already set color to localStorage */ if (window.localStorage.getItem('bgColor')) { var elements = document.getElementsByClassName("card-bg") for (var i = 0; i < elements.length; i++) { elements[i].style.background = this.value; } } function changeBgColor() { let color = document.getElementById('colorpicker').value; const bg_curr = localStorage.getItem('bgColor'); console.log(color, bg_curr); localStorage.setItem('bgColor', color); document.getElementById('colorpicker').addEventListener('input', function() { var elements = document.getElementsByClassName("card-bg") for (var i = 0; i < elements.length; i++) { elements[i].style.background = color; } }) } window.addEventListener('DOMContentLoaded', () => changeBgColor());
 .card1 { width: 200px; height: 200px; background-color: #222; margin: 10px 0 0 0; }
 <input type="color" id="colorpicker" onchange="changeBgColor();"> <div class="card1 card-bg">Set A</div> <div class="card1 card-bg">Set A</div> <div class="card1 card-bg">Set A</div> <br>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!