質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Chrome extension

Chrome拡張機能

Q&A

解決済

2回答

1095閲覧

array.fromで取得した内容をすべてテキストエリアに表示したい

isaotinen

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2018/03/27 15:34

前提・実現したいこと

ChromeExtentionを現在作成していて、任意のクラスの内容をまとめてテキストエリアに表示したいです。

該当のソースコード

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>highlight</title> </head> <body> <div id="test1" class="aaa">test1</div> <div id="test2" class="aaa">test2</div> <div id="test3" class="aaa">test3</div> <div id="test4" class="aaa">test4</div>   <textarea id="highlightarea" name="contents" rows="30" cols="100"></textarea> </body> </html>
Array.from(document.querySelectorAll('div.aaa'), function(e){ document.getElementById("textarea").innerText = e.innerText; });

試したこと

array.fromでクラス内のテキストを取得させてテキストエリアに表示させようとしましたが、上記のコードだとtest4しかテキストエリア内に表示されません。test1からtest4まですべて表示するにはどのようにすればよろしいでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

たとえばこういう感じで。

js

1document.getElementById("highlightarea").value = Array.from( document.querySelectorAll( 'div.aaa' ), e => e.innerText ).join( "\n" ); 2```**動くサンプル:**[https://jsfiddle.net/n65o88jx/](https://jsfiddle.net/n65o88jx/) 3 4--- 5 6Array.from() - JavaScript | MDN7[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/from](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/from) 8 9【Array.prototype.join() - JavaScript | MDN10[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/join](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/join)

投稿2018/03/27 15:47

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

isaotinen

2018/03/28 04:23

回答有り難うございます!
guest

0

大きく3つ間違っていて

document.getElementById("textarea").innerText = e.innerText;

  • textareaというidのノードはありません
  • テキストエリアのinnerTextをいじるのはおすすめしません(valueへアクセス)
  • ループ処理を「=」で代入すると前のデータは上書きされます

Array.fromはIE対応してないんじゃなかったでしたっけ?
逆にIEを斬るつもりならもっといろいろ書ける気がします
データをループして取るならArray.prototypeのforEachかmapですね

sample

javacript

1<div id="test1" class="aaa">test1</div> 2<div id="test2" class="aaa">test2</div> 3<div id="test3" class="aaa">test3</div> 4<div id="test4" class="aaa">test4</div> 5<textarea id="highlightarea" name="contents" rows="30" cols="100"></textarea> 6<script> 7document.querySelector("#highlightarea").value=Array.prototype.map.call(document.querySelectorAll('div.aaa'), function(x){ 8return x.innerHTML; 9}).join(","); 10</script>

投稿2018/03/28 01:34

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

isaotinen

2018/03/28 04:23

回答有り難うございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問