Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

95
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda