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

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

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

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

Q&A

解決済

4回答

6782閲覧

クラス名で取得した複数の要素のスタイルを一括で変更する方法

Raiden

総合スコア22

JavaScript

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

0グッド

0クリップ

投稿2020/05/22 09:11

クラス名で取得した複数の要素のスタイルを一括で変更する方法を教えて下さい。
下記のコードを実行しましたが、取得した要素のheightを変更できませんでした。

JavaScript

1 let harfText = document.getElementsByClassName("harf-text"); 2 for (let i = 0; i < harfText.length; i++) { 3 harfText[i].style.height = "500"; 4 }

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

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

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

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

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

guest

回答4

0

この手の処理はcssで別の専用のクラスに属性をふって、そのクラスをつけ外しすることです

投稿2020/05/22 09:40

yambejp

総合スコア114829

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

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

Raiden

2020/05/22 10:07

確かにその方法でもできますが、なぜでしょうか? その方式の明確なメリットがあれば、私も書き換えたいと思います。 よろしくお願いします。
yambejp

2020/05/22 10:16

複数の指定ができたり、特別な条件を指定でき、さらに複数の属性を一度につけることができるので、汎用性が高いからです <style> .extend{color:red;background-Color:yellow;height:50px;} </style> <script> window.addEventListener('DOMContentLoaded', ()=>{ document.querySelectorAll(".harf-text,.xxx").forEach(x=>{ x.classList.add('extend'); }); }); </script> <div class="harf-text">harf-text</div> <div class="xxx">xxx</div> <div class="harf-text">harf-text</div> <div class="yyy">yyy</div> <div class="harf-text">harf-text</div>
Raiden

2020/05/22 21:58

ありがとうございます。 大変勉強になりました。 今後の参考にさせていただきます。
guest

0

ベストアンサー

JavaScript

1 harfText[i].style.height = "500";

単位がついていません。 500px とかにする必要があるのでは。

投稿2020/05/22 09:35

編集2020/05/22 09:57
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

miyabi_takatsuk

2020/05/22 14:21 編集

HTMLCollectionでの取得なので、そのままでは、単位を付けても動きません。
退会済みユーザー

退会済みユーザー

2020/05/22 14:42

いや、手元だと harfText[i].style.height = "500px"; にするだけで動いてますね。
miyabi_takatsuk

2020/05/22 14:45

すみません、私の勘違いでした 汗 大変申し訳ございません。
guest

0

jQueryというJSを使用してみてはどうでしょうか?

クラスの追加 addClass(class)
クラスの削除 removeClass(class)
cssの変更 css({"color":"brown","text-align":"left"})

などを使用する事で実現できると思います。

参考URL : jQuery の基礎

投稿2020/05/22 09:32

newdaysys

総合スコア40

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

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

0

質問者さんのコードが正しく動かなかった原因は二つあります。

取得の仕方が間違っている

javascript

1for (let i = 0; i < harfText.length; i++) { 2 harfText.item(i).style.height = "500"; 3}

HTMLCollection要素(getElements系)から、特定のインデックスの要素を取得するには、
itemメソッドを使う必要がありますことでもできます。

失礼しました、上記は、取得できない原因というわけではなかったようですね。

特定のスタイルを、JavaScriptでstyle(インナースタイル)で、変更するには、単位が必要

javascript

1for (let i = 0; i < harfText.length; i++) { 2 harfText.item(i).style.height = "500px"; 3}

heightに対しては、上記のように、なにかしらの単位を付けなければ、DOMに反映すらしません。

ただし、yambejpさんの回答通りの方が、レンダリングコスト(パフォーマンス的にも)よく、
有効であると思います。
また、newdaysysさんの回答通り、jQueryを使用した方が、構文自体はかなり行数を抑え、楽に実装できるかと。

以上です。

投稿2020/05/22 14:17

編集2020/05/22 14:44
miyabi_takatsuk

総合スコア9528

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

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

miyabi_takatsuk

2020/05/22 14:41

ほんとだ・・・。 ご指摘ありがとうございます。 修正します。
Raiden

2020/05/22 21:57

>レンダリングコスト(パフォーマンス的にも)よく なぜこの方式だとレンダリングコストとパフォーマンスが上がるのでしょうか? また、どれくらいの差が生まれるのでしょうか? よろしくお願いします。
miyabi_takatsuk

2020/05/23 01:14

質問の趣旨が大幅に変わると思うので、レンダリングコストや、効率などの話は別途質問立ててください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問