2017-01-27 10 views
0

Я пытаюсь сделать некоторые вещи с последним битом текста в абзаце, который требует преобразования его в массив. Я знаю, что могу взять этот последний бит с помощью the .contents() method, а затем изолировать последний элемент этого объекта.Преобразование элемента из объекта jQuery .contents() в строку или массив

Но когда я пытаюсь создать массив из этого последнего бита, единственное, что сохранилось, это длина! Демонстрация:

<p class="orig"><strong>Some bold text</strong> and some other text</p> 
<script> 
    var bits = $('.orig').contents(); // [strong, text] 
    var lastBit = bits[bits.length - 1]; // " and some other text" 
    var array = Array.from(lastBit); // [undefined, undefined, . . . undefined] 
</script> 

Что мне здесь недостает? Есть ли способ захватить последний бит текста в переменной javascript или объекте jQuery? Спасибо за помощь!

ответ

0

Переменная LastBit не простая строка, а скорее Text объект. Используйте lastBit.wholeText или lastBit.data, например, чтобы получить фактическую текстовую строку.

0

В коде есть пара проблем.

1.Array.from метод ожидает массив -подобный или Iterable объект. Но в вашем случае это строка (которая итерабельна), которая разбивает строку на отдельные символы, и я предполагаю, что вам не нужно это поведение.

2.lastBit является Node, и вы должны получить текстовое значение данных в этом узле, который может быть извлечен с помощью lastBit.data. После получения строкового значения вы можете разделить его с помощью символа seperator, например '', чтобы преобразовать его в массив.

Следующий код должен работать.

var bits = $('.orig').contents(); 
 
var lastBit = bits[bits.length - 1]; 
 
var array = lastBit.data.split(' '); 
 
console.log(array);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p class="orig"><strong>Some bold text</strong> and some other text</p>