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

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

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

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

Q&A

解決済

2回答

1344閲覧

アラートが三回表示されてしまう

tomokia

総合スコア28

JavaScript

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

0グッド

0クリップ

投稿2021/06/08 01:27

編集2021/06/08 02:09

else ifでアラートの表示をしたいのですが、一番最後の'IDまたはパスワードが一致しません'のアラートが三回でてしまい困っています。一回で済むようにするにはどうすればよろしいでしょうか?
`

function logincheck(){ const id = document.getElementById('id').value; const pw = document.getElementById('pas').value; //ユーザー仮ナンバー const usernum=[ ['ss', '2222'], ['df', '4444'], ['we', '5555'], ]; //ID PW未入力時 if(id === "" && pw === ""){ alert("IDとパスワードは必須入力です"); //ID未入力時 }else if(id === ""){ alert("IDは必須入力です"); //PW未入力時 }else if(pw === ""){ alert("パスワードは必須入力です"); }else{ //ID PW一致チェック usernum.forEach(item =>{ if(item[0] === id && item[1] === pw){ window.location.href='トップ画面.html'; }else{ alert("IDとパスワードが一致しません"); } }); } } ```

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

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

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

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

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

K_3578

2021/06/08 01:28

ソースコードはMarkDownのcode機能で囲んで提示ください。
m.ts10806

2021/06/08 01:35

Javascriptだけだと再現できませんので、ご配慮願います
K_3578

2021/06/08 01:55

なぜJavaタグ?JavaScriptとは別物です。
tomokia

2021/06/08 02:15

MarkDownで囲みました。見にくくて申し訳ないです。 タグをJava→Javascriptに変更しました。ご指摘ありがとうございます。
guest

回答2

0

ベストアンサー

js

1//ID PW一致チェック 2usernum.forEach(item =>{ 3 if(item[0] === id && item[1] === pw){ 4 window.location.href='html トップ画面.html'; 5 }else{ 6 alert("IDまたはパスワードが一致しません"); 7 } 8});

usernumが3要素あって、それぞれにalert()を出しているので、3回alert()が出ます。

欲しい動作は、「usernumのどれかにマッチしたらページ遷移、どれにもマッチしなかったらalert()」でしょう。

js

1if (usernum.findIndex(item => itemがidとpwにマッチしていたらtrue) >= 0) { 2 window.location... 3else 4 alert(...);

投稿2021/06/08 02:11

int32_t

総合スコア21695

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

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

tomokia

2021/06/08 02:56 編集

つまり、if(usernum.findIndex (item = > item[0] === id && item[1] === pw )>= 0)ていうことですかね;;
int32_t

2021/06/08 06:13

そうですね。
tomokia

2021/06/08 06:36

function logincheck(){ const id = document.getElementById('id').value; const pw = document.getElementById('pas').value; //ユーザー仮ナンバー const usernum=[ ['ss', '2222'], ['df', '4444'], ['we', '5555'], ]; //ID PW未入力時 if(id === "" && pw === ""){ alert("IDとパスワードは必須入力です"); //ID未入力時 }else if(id === ""){ alert("IDは必須入力です"); //PW未入力時 }else if(pw === ""){ alert("パスワードは必須入力です"); }else{ //ID PW一致チェック if(usernum.findIndex (item = > item[0] === id && item[1] === pw )>= 0){ window.location.href='html トップ画面.html'; }else{ alert("IDとパスワードが一致しません"); } }); } } こんな感じで書いたのですが、まだ動きません。なにがいけないのでしょうか?
int32_t

2021/06/08 06:39

"= >" を "=>" にしたら動きますか?
tomokia

2021/06/08 06:52

変更しましたが治りませんでした。htmlの方に問題があるのですかね?一応載せておきます。 <!DOCTYPE html> <html> <head> <script type="text/javascript" src="login.js" charset="shift_jis"></script> <link rel="stylesheet" href="login.css"> <script type="text/javascript" src="login.js" charset="uft-8"></script> </head> <table> <tr> <th>ID</th> <th><input class="nat"type="text" size"12" id="id" name="id"></th> </tr> <tr> <th>パスワード</th> <th><input class="nut" type="text" id="pas" name="pas" ></th> </tr> <tr> <th></th> <th><input class="contactrenzu" onclick=" logincheck()" type=submit value="次へ" ></th> </tr> </table> </html>
int32_t

2021/06/08 06:57

動かない、というのは具体的にどういう症状ですか? alert()はもう3回出ないですよね。 ブラウザの開発者ツールのコンソール何かエラーは出ていますか? ブラウザの開発者ツールで logincheck() 内をステップ実行してみたら何かわかるかもしれません。
tomokia

2021/06/08 07:10

htmlファイルをchromeにぶち込んで操作確認しています。それで、値を入力して次へボタンを押下してもアラート表示されません。三回アラート表示が出ていた際は、~は必須ですアラートも表示されていました。
int32_t

2021/06/08 07:15

JavaScriptコードの括弧の対応が取れているか確認してください。 それと、開発者ツールの使い方を覚えましょう。とりあえずHTMLページのどこかで右クリックして「検証」です。
tomokia

2021/06/08 07:27

検証したところ”Uncaught SyntaxError: Unexpected end of input”となっておりました。 これは括弧のコードが対応していないということでしょうか?
int32_t

2021/06/08 07:29

> 括弧のコードが対応していないということでしょうか? おそらくそうです。
tomokia

2021/06/08 07:55

}の数が一個多かったみたく、改修したところちゃんと動きました。この間違いを改修するのに何時間もかかってしまいましたが、検証のやり方等たくさんのアドバイスをしてくださったintさんには感謝しかございません。大変長らくお付き合いしていただき誠にありがとうございました。
guest

0

アラートだしたら関数を終了するようにしよう

投稿2021/06/08 02:07

y_waiwai

総合スコア88042

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問