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

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

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

Q&A

解決済

2回答

263閲覧

[Javascript]or演算子の扱い

mona_beginner

総合スコア33

0グッド

0クリップ

投稿2022/01/17 22:31

前提・実現したいこと

[アイテムの種類]から、スカートとズボンを選択したときに[丈]を表示したいと考えています。
コード4行目の"const flag~"で選択値がスカートorズボンの時、という風に指定したいのですがうまくいきません。ここではor演算子は使えないのでしょうか?

該当のソースコード

php

1<script> 2 window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelector('select[name=kind]').addEventListener('change',e=>{ 4 const flg=e.target.value!=="スカート"||"ズボン"; 5 document.querySelector('select[name=take]').disabled=flg; 6 document.querySelector('.s_take').toggleAttribute('hidden',flg); 7 }); 8 }); 9 10 </script> 11 12 <h3> 13 <p> 14 登録フォ―ム 15 </p> 16 <p> 17 衣服を追加 18 </p> 19 <form action="kakunin.php" method="POST"><!--2で処理を行う--> 20 <p> 21 名称 22 </p> 23 <p> 24 <input class="name" type="text" name="name" placeholder=他のアイテムと被らないようにしよう> 25 </p> 26 <p>色を選択</p> 27 <p> 28 <select class="color" name="color"> 29 <option value="赤">赤系</option> 30 <option value="黒">黒系</option> 31 <option value="白">白系</option> 32 </select> 33 </p> 34 35 <p>アイテムの種類を選択</p> 36 <p> 37 <select class="kind" name="kind"> 38 <option value="必須">下から絶対に選んでね</option> 39 <option value="ズボン" >ズボン</option> 40 <option value="スカート">スカート</option> 41 <option value="アウター">アウター</option> 42 </select> 43 </p> 44 45 <div class=s_take> 46 <p></p> 47 <p> 48 <select class="take_take" name="take"> 49 <option value="指定しない">指定しない</option> 50 <option value="ロング">ロング</option> 51 <option value="ミドル">ミドル</option> 52 <option value="ショート">ショート</option> 53 </select> 54 </p> 55 </div> 56 <input type="submit" name="confirm" value="確認する" class="button"/> 57 </form> 58 </h3>

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

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

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

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

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

Zuishin

2022/01/17 22:49

> const flg=e.target.value!=="スカート"||"ズボン"; e.target.value が "スカート" ではないならば true、または true という意味になります。 つまり、常に true です。
guest

回答2

0

javascript

1const flg=e.target.value!=="スカート"||"ズボン"; 2↓↓↓ 3const flg=!["スカート","ズボン"].includes(e.target.value);

投稿2022/01/18 01:44

yambejp

総合スコア114896

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

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

0

ベストアンサー

初学者のうちは ||&& は、真偽値(条件式など)を繋げるものだ、と覚えるとよいでしょう。条件式 || "ズボン" という使い方は別の意味になるので、今回の用途には使えません。

js

1const flg = e.target.value !== "スカート" && e.target.value !== "ズボン"; 2document.querySelector('select[name=take]').disabled = flg;

または

js

1const skirtOrPants = e.target.value === "スカート" || e.target.value === "ズボン"; 2document.querySelector('select[name=take]').disabled = !skirtOrPants;

投稿2022/01/17 23:22

編集2022/01/18 02:22
int32_t

総合スコア20925

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

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

maisumakun

2022/01/17 23:37 編集

> || "ズボン" という使い方はしません。 回答の趣旨と違う部分になりますが、「左辺が偽なら右辺の値にする」という意味で、「|| + 定数」のコードは使いうるので、その旨がわかるような書き方のほうがいいかも知れないと思いました。
int32_t

2022/01/18 02:20

たしかに、「しません」は言い過ぎですね。修正します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問