前提
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 それぞれのログで入力値を確認すると正常な結果が出力されます。 初心者の書いたコードでの質問すること大変恐縮ですが、調べ疲れてしまいました。どうかご教授のほどお願いいたします。
あなたの回答
tips
プレビュー