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

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

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

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

Q&A

解決済

3回答

1024閲覧

関数内で処理した結果の値が関数外に出せない

machaking

総合スコア46

JavaScript

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

0グッド

0クリップ

投稿2021/05/26 04:11

編集2021/05/26 04:13

こちらだとconsole.log(box_size)の結果が0になってしまい、関数aで処理した結果が関数の外に出ていません。
処理した結果を変数box_sizeの値に代入するにはどうすればいいでしょうか?
returnを使うのはなんとなくわかるのですがうまくいきませんでした。

for文内では処理した分だけbox_sizeに600か1190が加算されています。

JavaScript

1var image_size = document.querySelectorAll("figure.wp-block-image"); 2var image_array_height = []; 3let image_array_width = []; 4const targetCount = image_size.length; //配列の長さ 5 6var box_size = 0; 7 8const a =()=> {for(let i = 0; i < targetCount; i++){ 9 image_array_width.push($(image_size[i]).outerWidth()); 10 image_array_height.push($(image_size[i]).outerHeight()); 11 if ((image_array_width[i]) < image_array_height[i]){ 12 box_size += 600; 13 $(image_size[i]).css("width", "585px"); 14 } else if ((image_array_width[i]) > image_array_height[i]){ 15 $(image_size[i]).css("width", "1185px"); 16 box_size += 1190; 17 }; 18};} 19 20console.log(box_size); //0になってしまう 21$(".entry-content").css("width", box_size);

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

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

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

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

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

guest

回答3

0

関数式でaという関数を作成しているけど、aを呼び出していないのでbox_size0のままです。
aを呼び出せばよろしいのでは。

JavaScript

1a(); 2console.log(box_size);

投稿2021/05/26 04:20

itagagaki

総合スコア8402

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

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

machaking

2021/05/26 04:29

setTimeoutでaを呼び出す記述は元々の文にはあったのですがconsole.logがそれより以前になってたので 呼び出されなかったようです。 ありがとうございました。
guest

0

ベストアンサー

関数を引数にbox_sizeをとるようにして、box_sizeを更新するようにするのはいかがでしょうか。

const a =(box_size)=> {for(let i = 0; i < targetCount; i++){ image_array_width.push($(image_size[i]).outerWidth()); image_array_height.push($(image_size[i]).outerHeight()); if ((image_array_width[i]) < image_array_height[i]){ box_size += 600; $(image_size[i]).css("width", "585px"); } else if ((image_array_width[i]) > image_array_height[i]){ $(image_size[i]).css("width", "1185px"); box_size += 1190; }; return box_size; };} box_size = a(0); console.log(box_size); 

投稿2021/05/26 04:19

goto_yuta_

総合スコア211

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

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

machaking

2021/05/26 04:29

参考になりました。
guest

0

こちらだとconsole.log(box_size)の結果が0になってしまい、関数aで処理した結果が関数の外に出ていません。

関数aは作っただけで呼んでいないように見えます。

投稿2021/05/26 04:59

maisumakun

総合スコア146018

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問