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

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

新規登録して質問してみよう
ただいま回答率
87.20%
JavaServer Faces 2

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

受付中

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

Curious_IT
Curious_IT

総合スコア5

JavaServer Faces 2

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

0回答

0評価

0クリップ

65閲覧

投稿2022/09/22 14:38

前提

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaServer Faces 2

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