这是我的代码:
localStorage.setItem('qandaInputsValue7', $("#ask_q_tags span:first-child, #ask_q_tags span + span").each(function() { return $( this )[0].outerHTML }));
结果是:
如你所见,这是一个没有用的对象。
预期的结果是:(应该是localStorage中该键的值)
<span>something</span><span>something else</span>
请参阅?我需要组合return $( this )[0].outerHTML
的组合字符串将其设置为localStorage。我怎么能这样做?
注意JSON.stringify()
和.get()
都无法正常工作。
答案 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
,然后使用get
和join
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
);