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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

964閲覧

javascript 計算機 実装について

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/09/27 00:04

初学者です。javascriptを使って計算機のコードを入力しているのですが不明な点がいくつかあったため質問させていただきます。

html

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script> 6 <link rel="stylesheet" href="reset.css"> 7 <link rel="stylesheet" href="main.css"> 8 <title>計算機</title> 9 </head> 10 11 <body> 12 <div id="content"> 13 <div id="output" class="display"></div> 14 15 <button class="button-size" onclick="edit(this)">7</button> 16 <button class="button-size" onclick="edit(this)">8</button> 17 <button class="button-size" onclick="edit(this)">9</button> 18 <button class="button-size" onclick="edit(this)">+</button><br> 19 <button class="button-size" onclick="edit(this)">4</button> 20 <button class="button-size" onclick="edit(this)">5</button> 21 <button class="button-size" onclick="edit(this)">6</button> 22 <button class="button-size" onclick="edit(this)">-</button><br> 23 <button class="button-size" onclick="edit(this)">1</button> 24 <button class="button-size" onclick="edit(this)">2</button> 25 <button class="button-size" onclick="edit(this)">3</button> 26 <button class="button-size" onclick="edit(this)">*</button><br> 27 <button class="button-size" onclick="edit(this)">0</button> 28 <button class="button-size" onclick="edit(this)">00</button> 29 <button class="button-size" onclick="edit(this)">.</button> 30 <button class="button-size" onclick="edit(this)">/</button><br> 31 <button class="button-size2" onclick="reset()">AC</button> 32 <button class="button-size2" onclick="calc(this)">=</button> 33 </div> 34 </div> 35 <script src="main.js"></script> 36 </body> 37 </html>

javascript

1 let display = document.getElementById("output"); 2 3 function edit(nums) { 4 display.textContent += nums.textContent; 5 } 6 7 function calc() { 8 display.textContent = new Function("return " + display.textContent)(); 9 } 10 11 function reset() { 12 display.textContent = ""; 13 }

(CSSは省略しています)
以上のようにコードを入力し、基本的な動作も取れたのですが問題点がいくつか生じており、

①演算子が連続で入力できてしまう(4++*--// など)
②(細かいところにはなりますが)最初に0を入力した際にそのまま表示されてしまう(012+... など)

以上の2点を修正したいのですが、どなたかご教授いただけますと幸いです。
他にも改善点・修正点ありましたら同時にご指摘くださるとありがたいです。

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

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

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

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

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

gentaro

2021/09/27 00:18

シンプルに > ①演算子が連続で入力できてしまう(4++*--// など) > ②(細かいところにはなりますが)最初に0を入力した際にそのまま表示されてしまう(012+... など) ①今回入力したものと最後に入力されたものが連続で入力不可としたい場合に入力を無視するとかそういうロジックを考える ②最初に0が入力されたかどうかの判定方法を考えて該当する場合は無視する というロジックを「あなたが」考えてみて、その考えた内容で上手く行かない場合、どこで問題が発生しているのか、という提示をしよう。 ここを単に無料家庭教師サイトだと思ってるなら勘違い甚だしいので、 https://menta.work/ こういうサイトでお金を払って教えてもらえばいい。
BeatStar

2021/09/27 01:41

そして退会と
guest

回答2

0

演算子が連続で入力できてしまう(4++*--// など)

演算子は最後に入力したものを有効にすればいいでしょう

最初に0を入力した際にそのまま表示されてしまう

0の次に\dが来た場合、最初の0を削除すればいいでしょう

投稿2021/09/27 00:39

yambejp

総合スコア116724

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

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

0

①演算子が連続で入力できてしまう(4++*--// など)

edit(nums) で無条件に文字を足していますが、display.textContent の最後の文字とnumsの内容をチェックして場合によっては何もしないようにしてはいかがでしょうか

②(細かいところにはなりますが)最初に0を入力した際にそのまま表示されてしまう(012+... など)

「0.01+2」のように最初に0が入ってもよいケースもあるので、これは結構難しいですね。0を入れられないようにするのは本質的に無理なので、あとから不要な0を探して消しましょう。

投稿2021/09/27 00:22

int32_t

総合スコア21695

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問