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

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

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

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

HTML

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

Q&A

解決済

3回答

613閲覧

ブーリアン型の解説をしてほしい

KoTT

総合スコア19

JavaScript

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

HTML

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

0グッド

1クリップ

投稿2020/09/25 06:10

編集2020/09/28 02:09

指定したidをクリックすると、チェックボックスが表示/非表示になるコードです。
コードは海外サイトからひっぱってきたもで、正常に動作してます。
ただ、コードの意味がわからないので、解説をお願いできませんか

ブーリアン型というものが関係している?
以下コメント部「←ここ」がどう作用しているのか、なぜ記述が必要なのか、わかりません。

Javascript

1let switch = false; //←ここ 2 3function showCheckboxes() { 4 let checkboxes = document.getElementById('checkboxes'); 5 if (!switch) { 6 checkboxes.style.display = 'block'; 7 switch = true;//←ここ 8 } else { 9 checkboxes.style.display = 'none'; 10 switch = false;//←ここ 11 } 12}

html

1 <div id="checkboxes" > 2 <label for=""> 3 <input type="checkbox" id="" />1</label> 4 <label for=""> 5 <input type="checkbox" id="" />2</label> 6 <label for=""> 7 <input type="checkbox" id="" />3</label> 8 </div>

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

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

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

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

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

m.ts10806

2020/09/25 06:14

言う程難解な処理ではないと思いますが、どの程度調べたのでしょうか。 今後のために入門書籍1冊でも読んで通した方が良さそうに思います。
KoTT

2020/09/25 06:45

下記2名のかたの指摘で、"フラグ変数"”トグル処理”で調べたら、目的の情報がでてきて解決できました。ありがとうございます。入門書には目を通しましたが、”フラグ変数で調べる”ことにたどり着けませんでした。
m.ts10806

2020/09/25 06:48

質問本文には特に何も書いてないのでこちらもどの程度把握できているか分かりませんでした。 調べたこと試したことは確実に記載してください。他人には書いてあることが全てですので。
KoTT

2020/09/25 06:50

承知しましたら。コードを書き直したら記載いたします。
m.ts10806

2020/09/25 07:03

既に解決されていますし、次からで良いですよ。
guest

回答3

0

ベストアンサー

checkboxes.style.display の値を表すフラグ変数で、下記コードでフラグを判定しています。

JavaScript

1if (!boolean) {

しかし、checkboxes.style.display の値そのものを確認すれば、フラグは不要となるので、冗長なコードになってしまっています。


それと、element.style を直接操作するよりも「class 属性値」または「aria-hidden 属性値」で制御するほうがセマンティクス的に好ましいと思います。

Re: KoTT さん

投稿2020/09/25 06:21

think49

総合スコア18162

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

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

KoTT

2020/09/25 06:43

ありがとうございます。”フラグ変数”ということがわかっていませんでした。フラグ変数でぐぐると、初心者用の記事がたくさんでてきたので、やっと理解できました。理解できると、なんのことはない処理ですね。 アドバイスいただいたとおりに、class属性に変更してコード書き直してみます。
think49

2020/09/25 08:59

「フラグ変数」のキーワードが重要な情報ではないと思います。 - 変数 boolean の値を変えてみて、動きがどのように変化するか - 変数 boolean の値がいつ変化しているのか そのような目線で見てみれば、「変数 booleanが挙動に与える影響」を確認する事が出来ます。 それは「フラグ変数」という言葉を知ることなく、状況を把握できる手段になります。 フラグ変数という名前を得ることで他人のテクニックを盗む手段を得ますが、まずは目の前にあるコードの挙動を自分自身で理解するのが先決と思います。
guest

0

booleanという変数が微妙ですね
ようはフラグのトグル処理です。
フラグがtureならfalseにfalseならtrueにして、
それぞれに適当な処理を書いているのです

投稿2020/09/25 06:15

yambejp

総合スコア114769

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

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

KoTT

2020/09/25 06:41

ありがとうございます。"フラグを利用したトグル処理"でぐぐったら、同じレベルの初心者用記事がたくさんみつかりました。私の問題は、ググり方がわからなかくて困っていた、Boolean,JS,false,変数で検索してもみつからなかったので。
guest

0

if文に関する初歩的な誤解

if文
if(この中){
console.log("(この中)がtrueであれば実行される,falseであれば undefinedになる")}

初心者の勘違い

javascript

1if(false){ 2//処理 3};

↑これを、もし()falseだったら{}内を実行するという意味と誤解していた。
これが間違いで()falseなら、undefined(エラー)になる。

if文はあくまで()内の値がtrueだったら{}の処理を実行するという構文

javascript

1if(true){ 2//処理が実行される 3}; 4 5if(false){ 6//処理が実行されない 7};

フラグ処理でググって動きを理解

たぶんこういうこと

1回目のクリック

javascript

1let switch = false; //変数はfalseの状態でスタート(これに特に意味はない) 2 3//↓変数 switchはfalseではない=trueなので処理を実行する 4if (!switch){ 5checkboxes.style.display = 'block'; 6switch = true;//、実行されることで変数 switchがtrueに変更される 7} 8 9//↓変数 switchがtrueなら falseにする=この時点ではswitchはtrueなのでなにも処理されない 10else { 11checkboxes.style.display = 'none'; 12switch = false; 13}

2回目クリック

1回目のクリックで変数switchtrueになっているため、

javascript

1// !switchはfalseになり、以下の処理は実行されない 2 if (!switch){ 3 checkboxes.style.display = 'block'; 4 switch = true; 5 }

その代わり、

javascript

1 } else { 2 checkboxes.style.display = 'none'; 3 switch = false; 4 }

の処理が実行される
この処理の中で変数switchfalseに変換されるため、1回目のクリックと同じ状態にもどる
この処理が繰り返されることで、ON/OFFの挙動がつくれる。

また、checkboxes.style.displaycheckboxes.classList.toggle('is-open');に変更

投稿2020/09/28 02:14

編集2020/09/28 07:58
KoTT

総合スコア19

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問