代码之家  ›  专栏  ›  技术社区  ›  stack

如何存储的结果。是否将each()放入本地存储?

  •  -1
  • stack  · 技术社区  · 7 年前

    这是我的代码:

    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 将其设置为本地存储。我该怎么做?


    注意到 JSON.stringify() 也没有 .get() 行不通。

    2 回复  |  直到 4 年前
        1
  •  3
  •   Terry    7 年前

    .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 :)the htmlToStore 将是一个数组,因此如果需要真正的字符串,则必须使用 .join('')

        2
  •  1
  •   gurvinder372    7 年前

    使用 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
    );