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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

Q&A

解決済

2回答

564閲覧

簡単な論理演算子の問題です。例えば、WEEKDAY_MARCH_SPECIALとSPECIALと平日を同時に表示したいです。

sembokulove

総合スコア90

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

0グッド

1クリップ

投稿2024/07/01 07:44

編集2024/07/01 07:59

実現したいこと

diaDay === DiaType.WEEKDAY_MARCH_SPECIAL)と(diaDay === DiaType.SPECIAL)と(value === "平日")を同時に表示。 逆に、 diaDay === DiaType.HOLIDAY_MARCH_SPECIAL)と(diaDay === DiaType.SPECIAL2)と(value === "平日")を同時に表示したいです。

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

論理演算子の組み合わせがわからないです。

該当のソースコード

javascript

// 各列車が本日運転する列車なのかそうでないのかを判定する
// 引数はその列車の運転日情報 例:平日 全日 土・休日
function judgeTrainRunningDay(value) {
// 3月16日から31日までの間に運行する列車のみを表示
if ((diaDay === DiaType.WEEKDAY_MARCH_SPECIAL) && (value === "平日")) return true;
if ((diaDay === DiaType.HOLIDAY_MARCH_SPECIAL) && (value === "土休日")) return true;
if ((diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2) && (value === "平日" || value === "休日")) return true;

// 特定の期間中の運休条件を非表示にする if ((diaDay === DiaType.WEEKDAY_MARCH_SPECIAL || diaDay === DiaType.HOLIDAY_MARCH_SPECIAL) && (value === "3月16日→3月31日・5月3日→6日平日運休"||value === "3月16日→3月31日・5月3日→6日土休日運休")) return false; // それ以外の場合は通常の条件判定を行う if (value === "全日") return true; if ((value === "3月16日→3月31日・5月3日→6日平日運休") || value === "平日" && (diaDay === DiaType.WEEKDAY || diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2)) return true; if (value === "土曜・休日運休" && (diaDay === DiaType.WEEKDAY || diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2)) return true; if (value === "毎日運転" && (diaDay === DiaType.WEEKDAY || diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2)) return true; if ((value === "3月16日→3月31日・5月3日→6日土休日運休") || value === "休日" && (diaDay === DiaType.HOLIDAY || diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2)) return true; if (value === "土休日" && (diaDay === DiaType.HOLIDAY || diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2)) return true; if (value === "土・休日" && (diaDay === DiaType.HOLIDAY || diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2)) return true; if (value === "土曜・休日運転" && (diaDay === DiaType.HOLIDAY || diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2)) return true; if (value === "毎日運転" && (diaDay === DiaType.HOLIDAY || diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2)) return true; if (value === "毎日運転" && (diaDay === DiaType.HOLIDAY_MARCH_SPECIAL)) return true; if (value === "10月9/12/31日・11月3/21/24日" && ((diaDay === DiaType.SPECIAL)||(diaDay === DiaType.SPECIAL2))) return true; if (value === "10月12日・11月3/24日" && diaDay === DiaType.SPECIAL) return true; if (value === "3月16日→3月31日・5月3日→6日運転" && (diaDay === DiaType.WEEKDAY_MARCH_SPECIAL || diaDay === DiaType.HOLIDAY_MARCH_SPECIAL)) return true; return false;

}

試したこと・調べたこと

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

チャットgptやgeminiを当たったが的確な回答が得られなかったです。
逆に、DiaType.WEEKDAY_MARCH_SPECIALと平日を同時に表示することは成功しています。
JS文を部分的にではなく残さず書いていただければ幸いです。
return true;ないし、return false;を用いた回答方法だとありがたいです。

補足

特になし

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

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

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

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

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

guest

回答2

0

自己解決

当初のものとは少し異なりますが、
自分がしたかったのは、diaDay === DiaType.WEEKDAY_MARCH_SPECIALとvalue === "平日"、diaDay === DiaType.WEEKDAY_MAY_SPECIALとvalue === "平日"をそれぞれ表示するということでした。
理論上は、同じなので、これで解決ということとさせていただきます。

// 曜日を表す列挙型 const DayOfWeek = { SUNDAY: 0, MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6 }; // 平日ダイヤと土・休日ダイヤを表す列挙型 const DiaType = { WEEKDAY: 0, HOLIDAY: 1, WEEKDAY_MARCH_SPECIAL: 2, // 特殊ダイヤを追加 HOLIDAY_MARCH_SPECIAL: 3, // 特殊ダイヤを追加 WEEKDAY_MAY_SPECIAL: 4, // 特別ダイヤ3を追加 HOLIDAY_MAY_SPECIAL: 5, // 特別ダイヤ3を追加 SPECIAL3: 6, // 特殊ダイヤを追加 SPECIAL4: 7, // 特殊ダイヤを追加 }; let diaDay = DiaType.WEEKDAY; // 初期値は平日ダイヤ // 平日ダイヤか土曜日ダイヤか日曜日ダイヤかを判定する function judgeDiaDay() { let setYear = nowYear; // 年 let setMonth = nowMonth; // 月 let setDate = nowDate; // 日 let setDay = nowDay; // 曜日 // 特殊ダイヤ1の日付判定、3月16日→8月31日 if ((setMonth === 3 && setDay >= 16 || setMonth === 3 && setDay <= 31)) { diaDay = dayJudge(setYear, setMonth, setDate, setDay) === "weekday" ? DiaType.WEEKDAY_MARCH_SPECIAL : DiaType.HOLIDAY_MARCH_SPECIAL; } else if ((setMonth === 5 && setDay >= 3 || setMonth === 5 && setDay <= 6)) { diaDay = diaDay = dayJudge(setYear, setMonth, setDate, setDay) === "weekday" ? DiaType.WEEKDAY_MAY_SPECIAL : DiaType.HOLIDAY_MAY_SPECIAL;; } else if ((setMonth === 10 && setDate === 12) || (setMonth === 11 && setDate === 3) || (setMonth === 11 && setDate === 24)) { diaDay = DiaType.SPECIAL3; } else if ((setMonth === 6 && setDate === 28) ||(setMonth === 10 && setDate === 9) || (setMonth === 10 && setDate === 31) || (setMonth === 11 && setDate === 21)) { diaDay = DiaType.SPECIAL4; } else { // 平日ダイヤか休日ダイヤの判定 diaDay = dayJudge(setYear, setMonth, setDate, setDay) === "weekday" ? DiaType.WEEKDAY : DiaType.HOLIDAY; } // 表示更新 updateDisplayDiaDay(); return diaDay === DiaType.WEEKDAY; } // 表示更新 function updateDisplayDiaDay() { const todayDiaDaySpan = document.getElementById("todayDiaDaySpan"); if (todayDiaDaySpan) { todayDiaDaySpan.innerHTML = getDiaTypeString(diaDay); // DiaTypeに対応する文字列を取得する関数を使用 todayDiaDaySpan.style.backgroundColor = getDiaTypeColor(diaDay); // DiaTypeに対応する背景色を取得する関数を使用 } } // DiaTypeに対応する文字列を取得する関数 function getDiaTypeString(diaType) { switch (diaType) { case DiaType.WEEKDAY: return " 平日ダイヤ "; case DiaType.HOLIDAY: return "土・休日ダイヤ"; case DiaType.WEEKDAY_MARCH_SPECIAL: return " 3月16→31日平日ダイヤ "; case DiaType.HOLIDAY_MARCH_SPECIAL: return " 3月16→31日土休日ダイヤ "; case DiaType.WEEKDAY_MAY_SPECIAL: return "5月3→5月6日平日ダイヤ"; case DiaType.HOLIDAY_MAY_SPECIAL: return "5月3→5月6日土休日ダイヤ"; case DiaType.SPECIAL3: return " 10月9/12/31日・11月3/21/24日ダイヤ "; case DiaType.SPECIAL4: return " 10月12日・11月3/24日ダイヤ "; default: return ""; } } // DiaTypeに対応する背景色を取得する関数 function getDiaTypeColor(diaType) { switch (diaType) { case DiaType.WEEKDAY: return "#9ff"; // 平日ダイヤの背景色 case DiaType.WEEKDAY_MARCH_SPECIAL: return "#9ff"; // 平日ダイヤの背景色 case DiaType.HOLIDAY: return "#fcf"; // 土・休日ダイヤの背景色 case DiaType.HOLIDAY_MARCH_SPECIAL: return "#fcf"; // 土・休日ダイヤの背景色 case DiaType.WEEKDAY_MAY_SPECIAL: return "#ff9"; // 特殊ダイヤの背景色 case DiaType.HOLIDAY_MAY_SPECIAL: return "#ff9"; // 特殊ダイヤの背景色 case DiaType.SPECIAL3: return "#ff9"; // 特殊ダイヤ3の背景色 case DiaType.SPECIAL4: return "#ff9"; // 特殊ダイヤの背景色 default: return ""; } } // 各列車が本日運転する列車なのかそうでないのかを判定する // 引数はその列車の運転日情報 例:平日 全日 土・休日 function judgeTrainRunningDay(value) { // 3月16日から31日までの間に運行する列車のみを表示 if ((diaDay === DiaType.WEEKDAY_MARCH_SPECIAL) && (value === "平日")) return true; if ((diaDay === DiaType.HOLIDAY_MARCH_SPECIAL) && (value === "土休日")) return true; if ((diaDay === DiaType.HOLIDAY_MAY_SPECIAL) && (value === "平日")) return false; if ((diaDay === DiaType.WEEKDAY_MAY_SPECIAL) && (value === "土休日")) return false; if ((diaDay === DiaType.SPECIAL3 || diaDay === DiaType.SPECIAL4) && (value === "平日" || value === "土休日")) return true; // 特定の期間中の運休条件を非表示にする if ((diaDay === DiaType.WEEKDAY_MARCH_SPECIAL || diaDay === DiaType.HOLIDAY_MARCH_SPECIAL||diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL) && (value === "3月16→3月31日・5月3→6日平日運休"||value === "3月16→3月31日・5月3→6日土休日運休")) return false; // それ以外の場合は通常の条件判定を行う if (value === "全日") return true; if ((value === "3月16→3月31日・5月3→6日平日運休") || value === "平日" && (diaDay === DiaType.WEEKDAY || diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; if (value === "土曜・休日運休" && (diaDay === DiaType.WEEKDAY ||diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; if (value === "毎日運転" && (diaDay === DiaType.WEEKDAY ||diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; if ((value === "3月16→3月31日・5月3→6日土休日運休") || value === "休日" && (diaDay === DiaType.HOLIDAY ||diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; if (value === "土休日" && (diaDay === DiaType.HOLIDAY ||diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; if (value === "土・休日" && (diaDay === DiaType.HOLIDAY ||diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; if (value === "土曜・休日運転" && (diaDay === DiaType.HOLIDAY ||diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; if (value === "毎日運転" && (diaDay === DiaType.HOLIDAY ||diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; if (value === "10月9/12/31日・11月3/21/24日" && ((diaDay === DiaType.SPECIAL3)||(diaDay === DiaType.SPECIAL4))) return true; if (value === "10月12日・11月3/24日" && diaDay === DiaType.SPECIAL3) return true; if (value === "3月16→3月31日・5月3→6日運転" && ((diaDay === DiaType.WEEKDAY_MARCH_SPECIAL || diaDay === DiaType.HOLIDAY_MARCH_SPECIAL)||(diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL))) return true; if (value === "3月16→31日運転" && (diaDay === DiaType.WEEKDAY_MARCH_SPECIAL || diaDay === DiaType.HOLIDAY_MARCH_SPECIAL)) return true; if (value === "5月3→6日運転" && (diaDay === DiaType.WEEKDAY_MAY_SPECIAL || diaDay === DiaType.HOLIDAY_MAY_SPECIAL)) return true; return false; } // 平日ダイヤと土・休日ダイヤと特殊ダイヤの入れ替え function changeDiaType() { switch (diaDay) { case DiaType.WEEKDAY: diaDay = DiaType.HOLIDAY; break; case DiaType.HOLIDAY: diaDay = DiaType.WEEKDAY_MARCH_SPECIAL; break; case DiaType.WEEKDAY_MARCH_SPECIAL: diaDay = DiaType.HOLIDAY_MARCH_SPECIAL; break; case DiaType.HOLIDAY_MARCH_SPECIAL: diaDay = DiaType.WEEKDAY_MAY_SPECIAL; break; case DiaType.WEEKDAY_MAY_SPECIAL: diaDay = DiaType.HOLIDAY_MAY_SPECIAL; break; case DiaType.HOLIDAY_MAY_SPECIAL: diaDay = DiaType.SPECIAL3; break; case DiaType.SPECIAL3: diaDay = DiaType.SPECIAL4; break; case DiaType.SPECIAL4: diaDay = DiaType.WEEKDAY; break; default: break; } // 表示更新 updateDisplayDiaDay(); // 時刻表データ再読み込み getTimeTable(); // 再表示 setNewTime(setSecondSum); // 路線図に列車を配置していく drawTrain(); // 時刻表スペースをリセット resetTimetableSpace(); } //時刻表を表示する関数 function getTrainTimetableInfo(key) { alert(key); }

投稿2024/07/01 23:54

sembokulove

総合スコア90

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

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

0

return diaDay === DiaType.SPECIAL || diaDay === DiaType.SPECIAL2 || value === "休日";

でいいんじゃね

投稿2024/07/01 07:51

y_waiwai

総合スコア87955

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

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

sembokulove

2024/07/01 08:02

個人的にはreturn true; return false;での回答のほうがよかったのにな。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問