javascriptで実行する学籍番号しか反応しないのですが、どうしてですか?

JavaScript55閲覧

ベストアンサー

0

その他の回答(1件)

0

>javascriptで実行する学籍番号しか反応しないのですが、どうしてですか? 問題が2つあって、 ①checkというfunctionが2重定義されていて、2つ目のみ有効となっている。 scriptタグは複数書いても同じスコープ内になるので、混乱するなら</html>の上に1つにまとめて書きましょう。 ②郵便番号側の結果出力処理が、誤字っている。 out.innerText = "問題あり"; ↓ ou.innerText = "問題あり"; outの宣言がないのにエラーが出ないのは、①で指摘の2重定義が影響していると思われる。 以下、ボタン押下イベントで動くプログラム。 気になるところは直してます。 <p> 学籍番号 <input type="text" id="sample" maxlength='9'><br> <div id="out"></div> </p> <p> 郵便番号 <input type="text" id="sample2" maxlength='9'><br> <div id="ou"></div> </p> <input type="button" value="button" onclick="buttonClick()"> <script> function buttonClick() { let out = document.getElementById("out"); let sample = document.getElementById("sample"); let ck = /[A-Z]-?[0-9]{2}-?[A-Z]-?[0-9]{4}/.test(sample.value); // 正規表現チェック let hit = null; if (ck) { out.innerText = "問題あり"; hit = sample; } else { out.innerText = "なし"; } out = document.getElementById("ou"); sample = document.getElementById("sample2"); ck = !/^[0-9]{3}-?[0-9]{4}$/.test(sample.value); // 正規表現チェック console.log(sample.value); if (ck) { out.innerText = "問題あり"; if (!hit) { hit = sample; } } else { out.innerText = "なし"; } hit?.focus(); }; </script>