2017-09-08 11 views
2

配列/リストのすべての値を1行にするにはどうすればよいですか? HTMLの繰り返しリストのすべての値を取る

例コード:

<div class="projects"> 
    <span clas="project_title"> project1 </span> 
    <span clas="project_title"> project2 </span> 
</div> 

私はスパンの値を取るようにしたい場合は、私はこの

document.querySelectorAll('div.projects span.project_title')[0].textContent 

結果を使用する必要があります。

Project1のを


document.querySelectorAll('div.projects span.project_title')[1].textContent 

結果:

のProject2


これはに反復することなくなり取るために、任意の単純JSのクエリがありますリスト?

例結果:

project1に、Project2の


+0

で.Then join(',')配列を、配列を作成するために使用されます。 – Teemu

+0

@Teemuが言ったことを追加するには、リストを反復してそれをあなたが望むように出力する小さな関数を作成することを止めるものはありません。 – Jordumus

答えて

3

ない方法は反復せずにすべてのそれらを得るはありません。しかし、その反復はボンネットの下で行うことができます。 Array#mapを使用してtextContentsを取得できます。この場合はArray#mapのフードで行われるHTMLElementsを反復処理する必要があります。

const spans = document.querySelectorAll('div.projects span.project_title'); 
 
const texts = Array.prototype.map.call(spans, item => item.textContent); 
 

 
console.log(texts);
<div class="projects"> 
 
    <span class="project_title"> project1 </span> 
 
    <span class="project_title"> project2 </span> 
 
</div>

+0

新しいESnext機能を使用しているように見えますが、 'Array.prototype.map.call'の代わりに' Array.from'を実行できませんでしたか? – Keith

+0

@Keithそのようにする理由は、なぜ私は余分な配列を作成する必要がありますか? –

+0

'map'で' this'の機能を使用しています。 –

1

あなたはclassとスパンクラス属性ワードを変更する.AND Array.prototype.slice.call方法で行うことができます。 Array#mapはありません、リスト項目の内容を取得するには、何らかの形で、反復する必要がある,

var a = Array.prototype.slice.call(document.querySelectorAll('div.projects span.project_title')).map(a => a.textContent); 
 

 
console.log(a.join(','))
<div class="projects"> 
 
    <span class="project_title"> project1 </span> 
 
    <span class="project_title"> project2 </span> 
 
</div>

関連する問題