如何将.each()的结果存储到localStorage中?

时间:2018-03-13 09:48:17

标签: javascript jquery html local-storage

这是我的代码:

localStorage.setItem('qandaInputsValue7', $("#ask_q_tags span:first-child, #ask_q_tags span + span").each(function() { return $( this )[0].outerHTML }));

结果是:

enter image description here

如你所见,这是一个没有用的对象。

预期的结果是:(应该是localStorage中该键的值)

<span>something</span><span>something else</span>

请参阅?我需要组合return $( this )[0].outerHTML的组合字符串将其设置为localStorage。我怎么能这样做?

注意JSON.stringify().get()都无法正常工作。

2 个答案:

答案 0 :(得分:3)

.each()仅执行迭代逻辑,不返回任何内容。您要找的是使用.map()并将其与.get()组合以检索实际输出。最后,您需要将返回的数组转换为JSON,以便它可以存储为纯文本:

var htmlToStore = JSON.stringify(
    $("#ask_q_tags span:first-child, #ask_q_tags span + span")
        .map(function() {
            return this.outerHTML;
        })
        .get()
);

localStorage.setItem('qandaInputsValue7', htmlToStore);

请注意,不是使用$(this)[0].outerHTML来引用原始DOM节点,而是使用this.outerHTML :) htmlToStore将是一个数组,所以如果你想要一个真正的字符串,您必须使用.join('')折叠数组。

答案 1 :(得分:1)

使用map代替each,然后使用getjoin

localStorage.setItem('qandaInputsValue7', JSON.stringify( 
       $( "#ask_q_tags span:first-child, #ask_q_tags span + span" ).map( function() { 
           return $( this )[0].outerHTML 
       }).get().join(""); //get and join here
));

无需使用JSON.stringify

localStorage.setItem('qandaInputsValue7', 
       $( "#ask_q_tags span:first-child, #ask_q_tags span + span" ).map( function() { 
           return $( this )[0].outerHTML 
       }).get().join(""); //get and join here
);