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

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

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

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

336閲覧

Javascript で .style.height = ''; と .style.width = ''; をまとめて設定したい場合どのように書けばよいでしょうか?

homepage-site

総合スコア65

JavaScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2025/04/10 12:49

実現したいこと

Javascript で style をまとめて書きたいです。

発生している問題・分からないこと

style を分けて書くことは出来るのですが、まとめて書く方法が分かりません。

該当のソースコード

Javascript

1const changeImg = document.querySelectorAll('.changeImg').setAttribute('src', ev.target.result).height = '90px';  2 3const changeImg = document.querySelectorAll('.changeImg').setAttribute('src', ev.target.result).width = '90px';

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

調べてみても該当する記事を見つけることが出来ず困っております。

補足

特になし

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

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

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

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

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

utm.

2025/04/10 12:52

document.querySelectorAllをforeachメソッドなどでイテレートし、コールバック関数の引数を対象のELEMENTと考えて設定してください。
homepage-site

2025/04/10 13:36

アドバイスありがとうございます。 下記のようなコードになるとわかったのですが、この後に width も書きたい場合どうすればよいでしょうか? const changeImg = document.querySelectorAll('.changeImg').forEach(v => v.style.height = "90px");
utm.

2025/04/11 00:13

CSSを使った方があらゆる面で良いかと思います、検討しましたか?
yambejp

2025/04/11 03:18

読み込んだfileのサイズを元に動的にheight/widthを変更したいのでないなら、最初に固定値を指定しておわりでしょう
homepage-site

2025/04/11 04:17

utm. さん回答ありがとうございます。 視野が狭かったようで全く頭にありませんでした…
homepage-site

2025/04/11 04:19

yambejp さん回答ありがとうございます。 読み込んだfileのサイズを元にしたいのであれば最初に固定値を指定、ファイルをチェックして変換するのであればそのタイミングで良さそうですね、勉強になりました。
guest

回答2

0

ベストアンサー

Elementstyleプロパティはけっきょくは style 属性値になるので、e.setAttribute('style', 'height:90px; width:90px')e.style = 'height:90px; width:90px' でいいんじゃないでしょうか。また、固定値を設定するのならクラスでやるべきでしょう。

css

1.h90w90 { 2 height: 90px; 3 width: 90px; 4}

js

1document.querySelectorAll('.changeImg').forEach(v => { 2 v.setAttribute('src', ev.target.result); 3 v.classList.add('h90w90'); 4});

setAttribute() に戻り値はないので、メソッドチェーンでスタイル設定をすることはできません。

投稿2025/04/10 22:50

int32_t

総合スコア21914

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

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

homepage-site

2025/04/11 04:16

回答ありがとうございます。 クラスを設定した方が適切なんですね勉強になりました。 setAttribute() に戻り値はないというのも勉強不足だったようです覚えておきます。
guest

0

欲しい最終形がよくわからないのですが

html

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelectorAll('.changeImg').forEach(x=>{Object.assign(x.style,{height:'90px',width:'90px'})}); 4}); 5</script> 6<img class="changeImg" alt="1"> 7<img class="changeImg" alt="2"> 8<img class="changeImg" alt="3">

参考

うけとったファイルをimgタグに表示する

html

1<form class="user-area"> 2 <label> 3 <div class="user-icon"> 4 <img 5 src="" 6 class="changeImg" 7 style="height: 90px; width: 90px" 8 /> 9 </div> 10 <input 11 type="file" 12 name="attach[]" 13 class="attach" 14 data-maxsize="5" 15 accept=".png, .jpg, .jpeg" 16 hidden="true"; 17 /> 18 </label> 19 <button type="reset">clear</button> 20</form> 21 22<script> 23document.addEventListener('change',ev=>{ 24 if(ev.target.matches('.attach')){ 25 const file = ev.target.files[0]; 26 const fr = new FileReader(); 27 fr.onload=e=>{ 28 document.querySelector( '.changeImg' ).src=e.target.result; 29 } 30 fr.readAsDataURL(file); 31 } 32}); 33</script>

投稿2025/04/10 13:34

編集2025/04/11 00:51
yambejp

総合スコア117548

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

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

homepage-site

2025/04/10 14:17 編集

アドバイスありがとうございます。 前後のコードがないため最終形が分からない形になってしまい申し訳ありません。 .setAttribute('src', ev.target.result); はファイルアップロードの際に src を書きかえたいので残しておきたいです。 <div class="user-area"> <label> <div class="user-icon"> <img src="" class="changeImg" style="height: 90px; width: 90px" /> </div> <input type="file" name="attach[]" class="attach" data-maxsize="5" accept=".png, .jpg, .jpeg" style="display: none" /> </label> <div class="viewer" style="display: none"></div> <button type="button" class="attachclear">clear</button> </div> <script> //画像が選択される度に、この中の処理が走る const attach = document.querySelectorAll('.attach').onchange = function (ev) { //コンソールタブで適切に処理が動いているか確認 //console.log("image is changed"); //input で選択したファイルを非同期で読み取る const reader = new FileReader(); //--ファイル名を取得(ファイル名は危険なのでそのまま使えない) //const fileName = ev.target.files[0].name; //--画像が読み込まれた時の動作を記述(Webページの読み込みに応じて何らかの処理を設定することができる) //JavaScript で changeImg の src 属性を変更する reader.onload = function (ev) { //FileReader オブジェクトを作成し、 load イベントのリスナーを作成し、ファイルが読み込まれるとその result を取得し、提供されたコールバック関数を read() に渡すことによって機能します。 //target は Event インターフェイスの読み取り専用プロパティで、イベントが配信されたオブジェクトへの参照 const changeImg = document.querySelectorAll('.changeImg').forEach(v => v.style.height = "90px"); .setAttribute('src', ev.target.result); .height = '90px'; .width = '90px'; }; //指定したBlob型かFIle型のファイルを読み込んで、result属性にファイルのurlを格納 //今回は選択できるファイルはひとつだけなので、files[0]を指定 reader.readAsDataURL(this.files[0]); } </script>
yambejp

2025/04/11 00:48

うけとったfileをimgタグにサムネイルで表示したのでしょうか? 全体的にこなれてないと思います そもそもimgには最初かstyleが設定されているわけですからjsで上書きする意味がないと思います
homepage-site

2025/04/11 04:13

yambejp さん回答ありがとうございます。 実のところこの処理以外にも拡張子をチェックする処理もあるためうけとったfileをそのまま表示する展開にはならなさそうです… style はここで設定するよりもチェックした際に設定するようにしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問