2016-03-14 2 views
3

Например, я хочу, чтобы собрать некоторые тегов (позволяет сказать, пункт):JS - сочетающий элементы массива в одном пункте

var tagsCollection = document.getElementsByTagName('p'); 
var tagsCollectionLength = tagsCollection.length 

I перебрать (итерация):

for (var i = 0; i < tagsCollectionLength; i++) 
{ 

//get an array: 

var tagsCollectionArray = tagsCollection[i]; 
} 

Теперь, что сделать, чтобы получить все элементы массива как один элемент: поэтому он не будет выглядеть так:

[PARAGRAPH1, PARAGRAPH2, PARAGRAPH3]

, но как:

[paragraph1paragraph2paragraph3]

Я попытался присоединиться. CONCAT. и т.д. без успеха, вероятно, я делаю что-то неправильно, любая помощь приветствуется. Благодарю.

+0

Так что вы хотите 1 абзац текста вместо нескольких абзацев? – Andy

+0

Вы хотите повлиять на DOM только на структуру JS? '[paragraph1paragraph2paragraph3]' не имеет никакого смысла, это похоже на одну переменную под названием «paragraph1paragraph2paragraph3». – Cohars

ответ

1

Предположим, у вас есть эта html

<div> 
    <p>a</p> 
    <p>b</p> 
    <p>c</p> 
    <p>d</p> 
    <p>e</p> 
</div> 

Предполагая, что результат, который вы хотите является Array всего содержания параграфов (в [paragraph1paragraph2paragraph3]), то вы можете сделать следующее:

tagsCollection = document.getElementsByTagName('p'); 

var ar = []; 
for(var i = 0; i < tagsCollection.length; i++) { 
    ar.push(tagsCollection[i].innerText) 
} 
console.log([ar.join('')]) // => ["abcde"] 

См this fiddle

5

вы можете сохранить переменную за пределами for, добавить строки ide for и когда for заканчивается, нажмите его внутри массива. Вот как это сделать -

var tagsCollection = document.getElementsByTagName('p'); 
var tagsCollectionLength = tagsCollection.length; 
var tags = "", tagsCollectionArray = []; 

for (var i = 0; i < tagsCollectionLength; i++) 
{ 
    tags = tags + tagsCollection[i]; 
} 
tagsCollectionArray.push(tags); 
+0

Это не имеет никакого смысла для меня. Ваш цикл 'for' может быть выполнен с помощью' .join() '. – Cohars

0

Как я уже заметил, вы можете использовать Array.join("").

JSFiddle.

(function() { 
 
    var data = []; 
 
    var str = [].map.call(document.getElementsByTagName('p'), function(item) { 
 
    return item.innerHTML; 
 
    }).join(""); 
 
    data.push(str); 
 
    document.write("<pre>" + JSON.stringify(data) + "</pre>"); 
 
})()
<p>hello</p> 
 
<p>workd</p> 
 
<p>test</p>

Смежные вопросы