Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

98
Vistas
JS sessionStorage para almacenar el nodo HTML y luego reutilizarlo más tarde

Necesito clonar algún contenido HTML, almacenarlo en sessionStorage y luego volver a implementar el HTML almacenado en el DOM en otra página. Por el momento, con mis pruebas, solo lo estoy haciendo todo en una página y llamando al almacenamiento de sesión con una actualización de página.

Entonces, esto es lo que he encontrado hasta ahora.

 var exp561CardFour = document.getElementById('dashboard_item_four'); var clnCardFour = exp561CardFour.cloneNode(true); sessionStorage.setItem('storedCardFour', clnCardFour);

Cuando voy a tomar el HTML con este fragmento de código en la consola...

 var grabCardFour = sessionStorage.getItem('storedCardFour');

... Termino con esto:

ingrese la descripción de la imagen aquí

Por favor ayuda :)

editar: FYI clnCardFour solo contiene algo de HTML y funciona bien

ingrese la descripción de la imagen aquí

edite con la sugerencia de Parking Masters en la consola:

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

La API de almacenamiento (sessionStorage/localStorage) solo almacena cadenas. Cuando usted llama:

sessionStorage.setItem('storedCardFour', clnCardFour);

la API usa el método .toString() contra el objeto clnCardFour , que devuelve [object HTMLLIElement] .

Entonces necesita la representación de cadena de ese Nodo. Puede lograrlo obteniendo el OuterHTML del Nodo de esta manera:

sessionStorage.setItem('storedCardFour', clnCardFour.outerHTML);

Cuando necesite restaurar ese nodo, simplemente use la propiedad .innerHTML del nodo principal para volver a colocarlo en el DOM.

 let div = document.querySelector('div'); let exp561CardFour = document.getElementById('dashboard_item_four'); sessionStorage.setItem('storedCardFour', exp561CardFour.outerHTML); let clonedFromStorage = sessionStorage.getItem('storedCardFour'); div.innerHTML += clonedFromStorage
 <div> <i id="dashboard_item_four">Hello there!</i> </div>

Y aquí hay un ejemplo de JS Bin

about 4 years ago · Juan Pablo Isaza Denunciar

0

El HTMLIElement es un elemento <i> , está almacenando todo el objeto del elemento en el almacenamiento.

Puede usar JSON (Notación de objetos de JavaScript) .stringify({}) para convertir en cadena el elemento y luego analizarlo nuevamente para obtener el elemento.

Aquí hay un ejemplo de eso:

 var myEl = document.getElementById("my-el"); alert("This will not print the object: " + myEl); alert("This will print the object: " + JSON.stringify(myEl));
 <i id="my-el"></i>

Los objetos desbordados no se clasifican en cadenas porque el objeto es demasiado largo.

Con jQuery:

 var myEl = $("my-el"); alert("This will not print the jQuery object: " + myEl); alert("This will print the jQuery object: " + JSON.stringify(myEl));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <i id="my-el"></i>

Más sobre JSON.stringify y JSON.parse en MDN.


(Tenga cuidado con lo que almacena en sessionStorage , solo puede almacenar hasta 2kB a la vez).

Ahora para obtener el objeto analizado usando JSON.parse :

 var myObj = "{}"; myObj; // "{}" JSON.parse(myObj); // Object { ... }

He reunido un ejemplo en vivo de todo:

 var exp561CardFour = document.getElementById('dashboard_item_four'); var clnCardFour = exp561CardFour.cloneNode(true); sessionStorage.setItem('storedCardFour', JSON.stringify(clnCardFour)); // When in an <iframe>, it'll say The operation is insecure." var grabCardFour = JSON.parse(sessionStorage.getItem('storedCardFour'));
 <i id="dashboard_item_four"><i>

El fragmento de código es de stacksnippets.net y no funcionará debido a problemas de seguridad de iframe.

Sin embargo, pruébelo en su servidor/archivo local y buena suerte.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda