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

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

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

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

HTML

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

Q&A

解決済

3回答

2235閲覧

JavaScriptを利用した電卓

ROGPURS

総合スコア78

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2021/12/25 01:23

編集2021/12/25 01:38

前提・実現したいこと

(例) JavaScriptで電卓のシステムを作っています。
以下のサイトを参考にして作りました。
https://webukatu.com/wordpress/blog/27277/
この時に、「×」と「÷」のボタンを押すと、「*」、「/」になってしまいます。
この表示を「×」、「÷」にしたいですが、どこを変えればいいのかわかりません。

[訂正]
(また、「C」ボタンもわかりやすくするため、色を変えたいです。)
解決しました。

発生している問題

・×と÷の正しい表示ができない

該当のソースコード

HTML

1<meta charset="utf-8"> 2 3 4 5 6 <form name="dentaku"> 7 <table> 8 <!-- 液晶画面部分 --> 9 <tbody><tr> 10 <td colspan="4"> 11 <input type="text" class="display" name="display" value="" disabled=""> 12 </td> 13 </tr> 14 15 <!-- 上から1段目(7~9+÷) --> 16 <tr> 17 <td><input type="button" value="7" onclick="get_calc(this)"></td> 18 <td><input type="button" value="8" onclick="get_calc(this)"></td> 19 <td><input type="button" value="9" onclick="get_calc(this)"></td> 20 <td><input type="button" value="÷" class="operator" name="div_btn" onclick="get_calc(this)"></td> 21 </tr> 22 23 <!-- 上から2段目(4~6+×) --> 24 <tr> 25 <td><input type="button" value="4" onclick="get_calc(this)"></td> 26 <td><input type="button" value="5" onclick="get_calc(this)"></td> 27 <td><input type="button" value="6" onclick="get_calc(this)"></td> 28 <td><input type="button" value="×" class="operator" name="multi_btn" onclick="get_calc(this)"></td> 29 </tr> 30 31 <!-- 上から3段目(1~3+-) --> 32 <tr> 33 <td><input type="button" value="1" onclick="get_calc(this)"></td> 34 <td><input type="button" value="2" onclick="get_calc(this)"></td> 35 <td><input type="button" value="3" onclick="get_calc(this)"></td> 36 <td><input type="button" value="-" class="operator" onclick="get_calc(this)"></td> 37 </tr> 38 39 <!-- 上から4段目(0/C/=/+) --> 40 <tr> 41 <td><input type="button" value="0" onclick="get_calc(this)"></td> 42 <td><input type="button" value="C" onclick="get_calc(this)"></td> 43 <td><input type="button" value="=" class="equal" onclick="get_calc(this)"></td> 44 <td><input type="button" value="+" class="operator" onclick="get_calc(this)"></td> 45 </tr> 46 47 </tbody></table> 48 </form>

CSS

1 /* テーブルの装飾 */ 2 table { 3 /* 電卓のサイズ */ 4 width: 300px; 5 height: 400px; 6 /* 電卓が浮き出るように影を付ける */ 7 border: solid 1px #dcdcdca4; 8 border-right: solid 4px #dcdcdca4; 9 border-bottom: solid 4px #dcdcdca4; 10 border-radius: 10px; 11 /* インライン要素を中央に配置 */ 12 text-align: center; 13 /* 余白調整 */ 14 padding: 8px; 15 margin: 20px; 16 } 17 18 input { 19 /* ボタンのサイズ */ 20 width: 70px; 21 height: 70px; 22 /* ボタンの文字サイズ */ 23 font-size: x-large; 24 /* 数字部分の背景色 */ 25 background-color: #dcdcdca4; 26 /* ボタンの詳細設定 */ 27 border: none; 28 border-radius: 20px; 29 /* クリック時の黒枠を消す */ 30 outline: none; 31 } 32 33 /* ディスプレイの詳細設定 */ 34 .display { 35 width: 250px; 36 text-align: right; /* 文字を右詰めに */ 37 /* 見た目の詳細設定 */ 38 background: #ffffff; 39 border-top: solid #dcdcdca4 5px; 40 border-bottom: solid #dcdcdca4 5px; 41 border-right: solid #b6b6b6 6px; 42 border-left: solid #b6b6b6 6px; 43 border-radius: 5px; 44 } 45 /* 演算子の背景色を上書きで設定 */ 46 .operator { 47 background-color: #87cefa; 48 } 49 /* 記号=の部分の背景色を上書きで設定 */ 50 .equal { 51 background-color: #b6b6b6; 52 } 53 54 /* カーソルを上に乗せた時に色を濃くする */ 55 input:hover { 56 background: #747373b9; 57 } 58 .display:hover { 59 background: #ffffff; /* ディスプレイ部分は無効化 */ 60 } 61 .operator:hover { 62 background: #339cdd; 63 } 64 65 /* クリック時に色を濃くする */ 66 input:active { 67 background: #5a5a5a; 68 } 69 .operator:active { 70 background: #2c80b4; 71 }

javascript

1<script> 2 function get_calc(btn) { 3 if(btn.value == "=") { 4 document.dentaku.display.value = eval(document.dentaku.display.value); 5 } else if (btn.value == "C") { 6 document.dentaku.display.value = ""; 7 } else { 8 if (btn.value == "×") { 9 btn.value = "*"; 10 } else if (btn.value == "÷") { 11 btn.value = "/"; 12 } 13 document.dentaku.display.value += btn.value; 14 document.dentaku.multi_btn.value = "×"; 15 document.dentaku.div_btn.value = "÷"; 16 } 17 } 18 </script>

試したこと

Javascriptの一部の文の改正を行いました。

JavaScript

1 if (btn.value == "×") { 2 btn.value = "*"; 3 } else if (btn.value == "÷") { 4 btn.value = "/"; 5 }

補足情報(FW/ツールのバージョンなど)

ホームページ作成ツール「まめわざ」を使用しています。
現在の作成状況(実態)
https://asa-kyo.1web.jp/30509/calculator.html

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

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

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

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

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

guest

回答3

0

ベストアンサー

こんなイメージでしょうか?

■ サンプルコード
https://jsfiddle.net/cx20/jcm52ot3/

■ 実行結果
イメージ説明

以下、変更箇所になります。

■ 計算式の全角表示

javascript

1function convertZenkakuToHankaku(zenkaku) { 2 let result = zenkaku; 3 result = result.replace("×", "*"); 4 result = result.replace("÷", "/"); 5 return result; 6} 7 8function get_calc(btn) { 9 if(btn.value == "=") { 10 //document.dentaku.display.value = eval(document.dentaku.display.value); 11 document.dentaku.display.value = eval(convertZenkakuToHankaku(document.dentaku.display.value)); 12 } else if (btn.value == "C") { 13 document.dentaku.display.value = ""; 14 } else { 15/* 16 if (btn.value == "×") { 17 btn.value = "*"; 18 } else if (btn.value == "÷") { 19 btn.value = "/"; 20 } 21*/ 22 document.dentaku.display.value += btn.value; 23 document.dentaku.multi_btn.value = "×"; 24 document.dentaku.div_btn.value = "÷"; 25 } 26}

■ 「C」ボタンの色の変更

html

1<!-- <input type="button" value="C" onclick="get_calc(this)"> --> 2<input type="button" value="C" class="clear" onclick="get_calc(this)">

CSS

1/* 記号Cの部分の背景色を上書きで設定 */ 2.clear { 3 background-color: #e29dbc; 4} 5 6.clear:hover { 7 background: #924d6c; 8} 9 10.clear:active { 11 background: #823d5c; 12}

投稿2021/12/25 01:52

編集2021/12/25 01:55
cx20

総合スコア4633

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

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

ROGPURS

2021/12/25 02:07

回答ありがとうございます。 無事にできました! 本日は回答ありがとうございました。
guest

0

この表示を「×」、「÷」にしたいですが、どこを変えればいいのかわかりません。

eval(document.dentaku.display.value)としていますので、単純に「×」、「÷」に代えると計算ができなくなります。
ですので、document.dentaku.display.value は表示用として、計算用の文字列を別に持つ必要があるでしょう。


また、「C」ボタンもわかりやすくするため、色を変えたいです。

CSSで背景色を指定するのがいいでしょう。

css

1input[value="C"] { 2 background: red; 3}

投稿2021/12/25 01:44

Lhankor_Mhy

総合スコア36115

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

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

ROGPURS

2021/12/25 01:50

回答ありがとうございます。 「C」ボタンは入力ミスでできなかったようで無事にできました。 ありがとうございます。 もう一つの×・÷の件ですが、私は、 JavaScriptが初心者で計算用の文字列をどのように別で作るのかを教えていただけるとありがたいです。
Lhankor_Mhy

2021/12/25 01:56 編集

・グローバルに別に変数を用意し let formula = "" ・document.dentaku.display.value と同じく操作をするように記述を変え(×÷だけ別にする) document.dentaku.display.value = ""; fomula = ""; など ・eval は計算用の変数を対象にする eval(fomula) などとしてみてください。
Lhankor_Mhy

2021/12/25 01:58

と、思ったのですが、cx20さんのご回答の eval の際に置換するやり方の方が楽そうです。 そっちをお試しになってみてはどうでしょうか。
ROGPURS

2021/12/25 02:07 編集

回答ありがとうございます。 Lhankor_Mhyさんのでも、cx20さんのでもどちらでもできました! 今回は、お勧めしていただいたcx20さんの方で実装させていただきました。 回答ありがとうございました。
guest

0

以下でちゃんとbtnのvalueを変更してますね。

js

1 if (btn.value == "×") { 2 btn.value = "*"; 3 } else if (btn.value == "÷") { 4 btn.value = "/"; 5 } 6

*や/は計算処理時の演算子として必要なだけのはずで、btnのvalueを変える必要はないと思います。

投稿2021/12/25 01:38

m.ts10806

総合スコア80850

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

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

ROGPURS

2021/12/25 01:42

対象となる上の文をそのまま消していいということですか?
m.ts10806

2021/12/25 01:44

「ボタンを押すと〜になってしまう」原因について言及したのみです。 消すことにより要件通り動くかはまた別の話で、しっかりとロジック考えてコードに反映してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問