Réglage et prise en localStorage avec jQuery
J'essaie localStorage et tenter à l'obtention de texte à partir d'un div et de les stocker dans localStorage, cependant, il le définit comme un [object object] et renvoie [object object]. Pourquoi est-ce arrivé?
JS:
localStorage.content = $('#test').html('Test');
$('#test').html(localStorage.content);
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test"></div>
- N'utilisez pas de
content
, utilisezgetItem()
etsetItem()
- l'utilisation de JSON.stringify
- Double Possible de Obtenir la valeur d'une variable à partir d'localStorage à partir d'un autre fichier javascript
Vous devez vous connecter pour publier un commentaire.
Vous avez dit que vous tentez de obtenir le texte d'un div et de le stocker sur un stockage local.
Veuillez Noter: le Texte et Html sont différents. Dans la question, vous avez mentionné le texte.
html()
sera de retour du contenu Html comme<a>example</a>
. si vous souhaitez obtenir un contenu de Texte, alors vous devez utilisertext()
au lieu dehtml()
alors le résultat seraexample
au lieu de<a>example<a>
. De toute façon, je suis en utilisant la terminologie de laisser le Texte.Étape 1: obtenir le texte de la div.
ce que vous avez fait n'est pas d'obtenir le texte de la div, mais le texte d'un div.
est en fait la mise en texte de la div et la sortie sera un objet jQuery. C'est pourquoi il le définit comme
[object Object]
.Pour obtenir le texte que vous avez à écrire comme cela
$('#test').html();
Cela retourne une chaîne de caractères n'est pas un objet, alors le résultat sera
Test
dans votre cas.Étape 2: ensemble de locaux de stockage.
Votre approche est correcte et vous pouvez l'écrire comme
Mais l'approche privilégiée est
localStorage.setItem(key,value);
pour définirlocalStorage.getItem(key);
à obtenir.clé et la valeur doivent être des chaînes de caractères.
donc, dans votre contexte, code deviendra
Mais je ne trouve pas de sens dans votre code. Parce que vous voulez obtenir le texte de la div et de la stocker sur un stockage local. Et encore vous êtes en train de lire le même local de stockage et mis à div. tout comme
a=10; b=a; a=b;
Si vous êtes confrontés à d'autres problèmes, veuillez mettre à jour votre question en conséquence.
Utilisation
setItem
etgetItem
si vous voulez écrire de simples chaînes de localStorage. En outre, vous devriez être en utilisanttext()
si c'est le texte que vous êtes après que vous dire, sinon vous obtiendrez la pleine HTML comme une chaîne de caractères.L'échantillon à l'aide .texte()
JSFiddle:
https://jsfiddle.net/f3zLa3zc/
Stocker le code HTML lui-même
JSFiddle:
https://jsfiddle.net/psfL82q3/1/
Mise à jour de l'utilisateur commentaire
Un utilisateur souhaitez mettre à jour le localStorage lorsque la div du contenu des modifications. Depuis qu'il est difficile de savoir comment la div contenu changements (ajax, autre méthode?)
contenteditable
etblur()
est utilisé pour modifier le contenu de la div et de remplacer l'ancienlocalStorage
entrée.Si nous étions à l'aide d'ajax nous serait plutôt de déclencher la fonction via la fonction de responsable de la mise à jour du contenu.
JSFiddle:
https://jsfiddle.net/g1b8m1fc/
.text()
et.html()
les deux fonctionnent de la même manière avec un paramètre ils renvoient un objet jQuery et sans un paramètre de renvoyer une chaîne de caractères. Il n'y a pas de raison de changer à l'aide de.text()
si l'OP veut vraiment le contenu HTML.attempting at getting text
. Mais vous avez raison à propos de l'objet-bien. Mise à jour de réponse..html()
avec les ajouts, comme mentionné par @JJJ , ainsi que sur une solution de rechange à l'aide detext()
dans le cas où qui est de toutes les OP nécessaire.La
localStorage
ne peut stocker chaîne de contenu et que vous voulez stocker un objet jQuery depuishtml(htmlString)
retourne un objet jQuery.Vous devez définir la chaîne de contenu au lieu d'un objet. Et l'utilisation de la
setItem
méthode pour ajouter des données etgetItem
pour obtenir des données.