Вот мой код:

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() не будут работать.

-1
stack 13 Мар 2018 в 12:48

2 ответа

Лучший ответ

Используйте 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
);
1
gurvinder372 13 Мар 2018 в 10:12

.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('').

3
Terry 13 Мар 2018 в 11:41