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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

993閲覧

JavaScript ifでの改行を複数行いたいが、一度しか改行されない。

Yusedesu

総合スコア1

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/08/17 14:28

発生している問題・エラーメッセージ

★☆★☆★ ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆

該当のソースコード

JavaScript

1for(var i = 0; i< 24; i++){ 2 if(i % 2 == 0){ 3 document.write("★"); 4 }else{ 5 document.write("☆"); 6 }if(i == 4){ 7 document.write("<br>"); 8 }

HTML

1<!DOCTYPE html> 2 <html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>JavaScript</title> 6 </head> 7 8 <body> 9 <script src="script.js"></script> 10 </body> 11 12 13</html>

実現したいこと

★☆★☆★
☆★☆★☆
★☆★☆★
☆★☆★☆
★☆★☆★

↑のように表示をしたいのですが、最初の5しか改行されず、その後が改行されないのでどうすればいいのかわかりません。
こちらの原因を教えていただきたく思います。よろしくお願いします。

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

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

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

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

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

guest

回答4

0

if(i == 4)では、iが4のときの1度しかtrueになりません。

i % 2 == 0がループ中で2回に1回trueになることを踏まえて、5回に1回処理するようにすれば良いかと思います。

投稿2021/08/17 14:34

ishina_yum

総合スコア509

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

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

Yusedesu

2021/08/17 14:57

解決しました!ありがとうございました!
guest

0

ベストアンサー

こちらの原因

i == 4
↑ループカウンタ戻したりしない限り一度しかこれを満たす状況は起きませんよ。

★と☆の切り替えが「2の倍数」なのですから、よく考えれば明白です。

実現したいこと

★☆★☆★
☆★☆★☆
★☆★☆★
☆★☆★☆
★☆★☆★

i=0で<24ならこうなるはず。
★☆★☆★
☆★☆★☆
★☆★☆★
☆★☆★☆
★☆★

1つ1つ意味を理解しましょう。

投稿2021/08/17 14:38

編集2021/08/17 14:40
m.ts10806

総合スコア80875

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

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

Yusedesu

2021/08/17 14:57

解決しました!ありがとうございました!
guest

0

参考までに。
小さなプログラムでは気にしないのですが、
大きくなってくるとデータ集めと出力は分けるとなにかといいことがあります。

javascript

1const ml = 24; 2const w = 5; 3let star = ""; 4let x; 5let i; 6 7for (i=0; i<ml; i++) { 8 if (i % 2 == 0) { 9 x = "★"; 10 } else { 11 x = "☆"; 12 } 13 star = star + x; 14} 15 16const a = star.length % w; 17if (a > 0) { 18 star = star + " ".repeat(w - a); 19} 20for (i=0; i<(star.length / w); i++) { 21 document.write(star.substr(i * w, w) + "<br>"); 22}

投稿2021/08/17 21:36

takasima20

総合スコア7464

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

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

0

JavaScript

1for(var i = 0; i< 25; i++){ 2 if(i % 2 == 0){ 3 document.write("★"); 4 }else{ 5 document.write("☆"); 6 }if(i % 5 == 4){ 7 document.write("<br>") 8 } 9}

一番下のif(i == 4)からif(i % 5 == 4)に変更することで解決しました。
for(var i = 0; i < 24; i++)の24は間違いで25が入ります。

投稿2021/08/18 01:36

Yusedesu

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問