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

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

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

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

Q&A

3回答

3251閲覧

JavaScriptの関数でreturnで値を返す場合の処理について

kurikara

総合スコア7

JavaScript

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

0グッド

0クリップ

投稿2016/12/13 14:02

編集2017/04/14 02:47

###前提・実現したいこと
JavaScriptでreturnで値を返す場合の動作について

###発生している問題・エラーメッセージ

JavaScriptで聞きたいことがあります。今ボタンを押したら、入力チェックを行うようにしているのですが、変数を引数として渡して、その変数にいれた値を渡していましたが、別の人から「returnで値を渡して、その値で判断すればいい」と教えて頂きました。
しかし、それを試すと、関数で呼び出した際とif文の時で二度アラートが出ます。私のやり方が間違っているのか、これだとこの方法で合っているのかがよくわかりません。教えて頂けると幸いです。

###旧

//保存ボタンを押した時の処理 function insert\(\){ check = 0 ; input_check\(check\) ; if\(check == 0\){ work_select\(\) ; } } //入力チェックの処理 function input_check\(check\){ if\( work_kbn_input\.value == ""\){ alert\("作業区分は必須入力です。"\) ; check = 1 ; }else if\( work_name_input\.value == "" \){ alert\("作業区分名は必須入力です。"\) ; check = 1 ; }else if\( work_kbn_input\.value\.length != 5\){ alert\("作業区分に入力する文字数は5文字です。"\) ; check = 1 ; }else if\( work_kbn_input\.value\.match\(/\[\^0-9A-Z\]/\)\){ alert\("作業区分に半角英数字大文字以外は入力してはいけません。"\) ; check = 1 ; } }

###新

//保存ボタンを押した時の処理 function insert\(\){ check = 0 ; input_check\(\) ; // アラートがある関係でこうするとエラーアラートをもう一回出してしまう if\( input_check\(\) == 0 \){ work_select\(\) ; } } function input_check\(\){ if\( work_kbn_input\.value == ""\){ alert\("作業区分は必須入力です。"\) ; return 1 ; }else if\( work_name_input\.value == "" \){ alert\("作業区分名は必須入力です。"\) ; return 1 ; }else if\( work_kbn_input\.value\.length != 5\){ alert\("作業区分に入力する文字数は5文字です。"\) ; return 1 ; }else if\( work_kbn_input\.value\.match\(/\[\^0-9A-Z\]/\)\){ alert\("作業区分に半角英数字大文字以外は入力してはいけません。"\) ; return 1 ;; } return 0 ; }

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

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

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

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

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

guest

回答3

0

サンプルプログラムの趣旨はわかりませんが、引数と戻り値の意味を確実に理解したほうが良いです。

引数:呼び出し元から下請け関数へのデータ受け渡しに使用するもの
戻り値:下請け関数から呼び出し元へのデータ受け渡しに使用するもの

この場合、insertが呼び出し元でinput_checkが下請けとなる関数です。

投稿2016/12/13 14:15

編集2016/12/13 14:18
HogeAnimalLover

総合スコア4830

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

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

0

返り値を判定に利用する場合は、下記のような形で使えば、2回以上判定があっても大丈夫です。
下記の例では変数checkに代入する形にしていますが、不都合であればほかの変数に代入する形にしてください。

javascript

1//保存ボタンを押した時の処理 2function insert(){ 3 var check = input_check(); // 返り値を変数代入する 4 5// 返り値を代入した変数を判定に利用する 6 if( check == 0 ){ 7 work_select() ; 8 } 9} 10 11 12 13function input_check(){ 14 if( work_kbn_input.value == ""){ 15 alert("作業区分は必須入力です。") ; 16 return 1 ; 17 }else if( work_name_input.value == "" ){ 18 alert("作業区分名は必須入力です。") ; 19 return 1 ; 20 }else if( work_kbn_input.value.length != 5){ 21 alert("作業区分に入力する文字数は5文字です。") ; 22 return 1 ; 23 }else if( work_kbn_input.value.match(/[^0-9A-Z]/)){ 24 alert("作業区分に半角英数字大文字以外は入力してはいけません。") ; 25 return 1 ;; 26 } 27 return 0 ; 28}

投稿2016/12/13 14:08

yamato_hikawa

総合スコア2092

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

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

0

質問者の求めてる回答とは異なりますが、
このチェック方法だと、作業区分と作業区分名を未入力で保存ボタン押した場合、
アラートで表示されるメッセージって作業区分は必須入力です。だけになると思うのですけど、大丈夫ですか?

関係なくてすいません。

投稿2017/04/19 04:25

King_of_Flies

総合スコア382

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

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

think49

2017/04/19 04:51 編集

[編集履歴] を読むと分かりますが、質問者が本文を抹消した後にteratail運営が抹消を取り消しています。 2016/12/13 23:02の質問という事もあり、質問者(kurikaraさん)はもう回答を見ていないと思います(いろいろと突っ込みミどころが多い質問ではあるので、気になりますが)。 https://teratail.com/questions/history-questions/58739
King_of_Flies

2017/04/19 04:59

ご丁寧にありがとうございます。 結局解決できたんですかね?気になりますw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問