teratail header banner
teratail header banner
質問するログイン新規登録
JavaServer Faces 2

JavaServer Faces(JSF)は、Webアプリケーションのユーザインタフェースを作成するためのフレームワークです。簡単に高機能なWebアプリケーションのインタフェースを作成することが可能です。

Q&A

0回答

191閲覧

JSで作成した計算機で、関数で設定した入力数値、演算子を別関数ではundefinedになってしまいます。

Curious_IT

総合スコア5

JavaServer Faces 2

JavaServer Faces(JSF)は、Webアプリケーションのユーザインタフェースを作成するためのフレームワークです。簡単に高機能なWebアプリケーションのインタフェースを作成することが可能です。

0グッド

0クリップ

投稿2022/09/22 14:38

0

0

前提

JSで計算機を作成しましたが、関数で入力値と演算子の変数を計算結果の関数を実行すると入力値と演算子が「undefind」になってしまいます。

実現したいこと

まだまだ初級者ですが、JavaScriptで計算機を作っています。
画面はHTMLのテーブルで作成しました。
数字、演算子用の各tdタブ内のnputタブに「onclickイベントハンドラー=関数」を記述してキー押下で関数を呼び出すようにしています。
myValue関数は入力数値、myCalculate関数は演算子を取得し、totlCalc関数(イコール関数)で上記関数の戻り値を使って計算結果の出力したいです。

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

myValue関数内のif文の条件「myFlg==1」で右入力値、else if文では条件「myFlg==2」で左入力値を設定するようにしてあります。

totlCalc関数(”=”キー)実行で入力値の戻り値をブラウザの開発画面で確認すると ['7', '3undefined'] と表示されます。
※押下したキーは「7」「+」「3」「=」

3undefined index01.html:74 (2) ['7', '3undefined'] index01.html:75 undefined

該当のソースコード

JavaScript

<script> myFlg = 1; let lefInput = ""; let rigInput = ""; function myValue(myKey){ // 計算機への入力値を設定 if( myFlg==1){ lefInput += myKey; // 入力値:押下したstr型で複数桁の数字を作成 document.myForm.myLine.value = lefInput; // 計算機に入力値が表示 } else if(myFlg==2){ document.myForm.myLine.value = ""; rigInput += myKey; document.myForm.myLine.value = rigInput; } return [lefInput,rigInput]; } function myCalculate(mycalc){ // 演算子を取得 myFlg = 2; return mycalc; } function totlCalc() { let mySymb = myCalculate(); let [a, b] = myValue(); let lefNum = Number(a); let rigNum = Number(b); // 以下 switch文で演算子で分岐・計算するコードが続きます。 ### 試したこと else if文の末尾に「return;」を記述してみましたが、呼び出し先の関数でundefinedになりました。 ### 補足情報(FW/ツールのバージョンなど) myValue関数内のif、else それぞれのログで入力値を確認すると正常な結果が出力されます。 初心者の書いたコードでの質問すること大変恐縮ですが、調べ疲れてしまいました。どうかご教授のほどお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問