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

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

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

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

Q&A

解決済

2回答

1396閲覧

getElementsByClassNameで複数の場合

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2018/02/02 13:35

クラスtestの「全て」にjavascriptを適用したいのですが、[0]だと「順番」しか指定できないようです。

「全て」を指定する方法はございませんでしょうか(@_@)

javascript

1var sampleElement = document.getElementsByClassName('test')[0]; 2sampleElement.classList.add('neko1', 'neko2');

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

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

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

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

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

guest

回答2

0

こんにちは。
すでに yambejpさんのご回答が、BA に決まっておりますが、以下、追加情報です。

MDNドキュメントのNodeListの説明に、以下が書かれています。

NodeList は Array と異なりますが、forEach() メソッドで処理を順次適用

することは可能です。ただし、このメソッドは古いブラウザで実装されて
いない場合があります。

とのことで、新しめのブラウザなら、forEach()が使えるので、以下

https://jsfiddle.net/jun68ykt/pdefsLv9/2/ (※ES6構文を使っているので、新しめのブラウザで開いてください)

でもいけると思います。ちなみにMac用のChrome v.64と FireFox v.58 では意図通り動きました。

それと、stackoverflow で同様の質問を見つけました。

queryselectorall-manipulating-nodes

上記のコメントの中にも

Its interesting to me that the above works, but document.querySelectorAll('div.foo').forEach(function (e1) ... doesn't work. Any ideas why? – Rene Wooller Jan 29 '15 at 3:51

 
querySelectorAll returns a NodeList, which doesn't have forEach. See: developer.mozilla.org/en-US/docs/Web/API/… – seans Feb 24 '15 at 15:44

とあって、 「NodeList#forEach() が動かない」とコメントされていますが、
約3年前のコメントなので、メジャーどころのブラウザの今現在の最新版なら、
ほぼどれでも動くかもしれません。

最後に、document.querySelectorAll('.test') にメソッドをつなげて、
まとめて何かの処理をしたいのであれば、そのような関数をNodeList
作ればよいと思います。

今の例であれば、NodeList の含む要素に、指定された複数のクラスを追加する
addClassesメソッドを作ってこれを使うコードは、たとえば、以下のようになります。
(以下では forループで回してます。)

https://jsfiddle.net/jun68ykt/pdefsLv9/3/ (※ES6構文を使っているので、新しめのブラウザで開いてください)

以上参考になれば幸いです。

投稿2018/02/02 22:36

編集2018/02/03 02:08
jun68ykt

総合スコア9058

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

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

退会済みユーザー

退会済みユーザー

2018/02/03 08:33

こんにちは!教授すぎます(*ノωノ)笑 目が白黒(☆_★;) の、NodeList…??どれがNodeListなのですか?querySelectorAllとかprototypeとか、でしょうか?それらはNodeListといって、arrayとは違う。と。 うーん、ひとまず今回は昔のブラウザなどは無視でいきます。('◇')ゞ カメみたいな理解力を相手に、いつも優しいご説明感謝です。
jun68ykt

2018/02/03 09:31 編集

> どれがNodeListなのですか? の答えは、 document.querySelectorAll('.test') が返す値がNodeList です。 あるいは、より厳密にいえば、 document.querySelectorAll('.test') が返すオブジェクトの型が NodeList です。 または document.querySelectorAll('.test') が返すオブジェクトのコンストラクタの名前が NodeList です。 と言ったほうがよいかもしれません。 これは以下のように確かめられます。 https://jsfiddle.net/jun68ykt/LxagL5jh/1/ 上記を Run すると、右下のfirebugの Consoleに NodeList と表示されているはずです。 これは、items のコンストラクタがNodeList()であること、すなわち、より直感的にいえば itemsが NodeListオブジェクトであることを表していて、であるならば、 items は以下の API ドキュメントに書いてあるプロパティやメソッドを使えることになります。 https://developer.mozilla.org/ja/docs/Web/API/NodeList また、オブジェクトの型の名前の確認方法については、 JavaScriptの「型」の判定について (south37さん@Qiita) https://qiita.com/south37/items/c8d20a069fcbfe4fce85 を読んでおくとよいでしょう。
退会済みユーザー

退会済みユーザー

2018/02/03 16:26

ありがとうございます。 >上記を Run すると、右下のfirebugの Consoleに NodeList と表示されているはずです。 あ、この右下のやつは何なのか?と思っていました。F12を押したときに表示されるものと同じ機能なのですね!! >JavaScriptの「型」の判定について (south37さん@Qiita) これをやると、NodeList かどうかわかるのですね。 では何かおかしいと思ったら、まずこちらの方法で「型」を調べて、それに応じた処理が決まっている、という風に進めるのですか。ははぁ~。 まぁ、でもjsfiddleの右下のやつでもいいわけですね。 あとは、その都度このテラテイルさんのページに戻って、徐々に理解していきます。(;・∀・) いつも(めちゃくちゃ)ご丁寧に、本当にありがとうございます。
jun68ykt

2018/02/03 17:15 編集

> これをやると、NodeList かどうかわかるのですね。 プログラムの中で、何らかの変数の型を知る必要があるときは、その記事のような やり方をしますが、もっと簡単には、APIドキュメントを読めばいいです。 今の場合 querySelectorAll が返すオブジェクトの型(というか、厳密にいえばコンストラクタの名前)を知りたいので、 "MDN querySelectorAll" でググって、一番上に出てくる、 https://developer.mozilla.org/ja/docs/Web/API/Document/querySelectorAll を読み、そこに 与えられた CSS セレクタにマッチする文書中の要素(※深さ優先の先行順走査によるもの)の全てのリスト (NodeList) を返します。 と書いてあるので、querySelectorAll がNodeListを返すことが分かります。 さらに、NodeList のリンク先に行けば、この返されたオブジェクトに どのような操作ができるかが分かります。 頑張ってくださーい☆
guest

0

ベストアンサー

HTMLCollectionやNodeListは有効なメソッドをもっていないので
Arrayのprototypeを利用するのが手っ取り早いです

css

1.neko1{background-Color:yellow;} 2.neko2{color:red;}

javascript

1window.addEventListener('DOMContentLoaded', function(e){ 2 Array.prototype.forEach.call(document.querySelectorAll('.test'),function(x){ 3 x.classList.add('neko1', 'neko2'); 4 }); 5}); 6</script>

html

1<div class="test">test1</div> 2<div class="test">test2</div> 3<div class="test">test3</div>

投稿2018/02/02 13:48

yambejp

総合スコア114747

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

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

jun68ykt

2018/02/02 14:18 編集

横から大変失礼いたします。m(_ _)m https://jsfiddle.net/3vhnktv6/ を (1) JQueryを選ばないでNo-Libraryに (2) LOAD TYPE を onLoad に (3) jsFiddle に書く場合、外側のwindow.addEventListener('DOMContentLoaded', function(e){ ・・・ } に替わる部分は jsFiddle が自動で付加してくれるので削除 上記3点を修正したものが、これです。→ https://jsfiddle.net/jun68ykt/pdefsLv9/1/
退会済みユーザー

退会済みユーザー

2018/02/02 14:57

jun68yktさん こんばんはー★ありがとうございます。できました。 (2)LOAD TYPEというのは、どちらのことでしょうか?? (3)外側のやつは、jsfiddleだけじゃなくwordpressのphpファイルでも不要みたいですね。書いた方が正式?とか、、、?ま、なんでもいっか。笑 yambejpさん というわけで、なんとかできました。<(_ _)> せっかく正しく書いてくださったのに、変なjsfiddleを作ってしまってすみませんでした。笑
think49

2018/02/02 17:50

> (2)LOAD TYPEというのは、どちらのことでしょうか?? [JavaScript (jQuery 3.2.1)] をクリックして現れた画面にあります。 yambejp さんの意図はおそらく、[Load type] を [No wrap - in <head>] に変更することですね。
退会済みユーザー

退会済みユーザー

2018/02/03 07:58

なな、なるほど!!←よくわかってない笑 どうもありがとうございます('◇')ゞ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問