ネイティブ JavaScript を使用した Web 計算機の実装

ネイティブ JavaScript を使用した Web 計算機の実装

この記事では、参考までに、計算機のWebバージョンを実装するためのJavaScriptの具体的なコードを共有します。具体的な内容は次のとおりです。

暇だったのでパソコンのシステムソフトウェアを見ていたら、電卓機能を見つけたので、この電卓の機能について簡単に書きます。この電卓のウェブ版には基本的な機能がすべて備わっていますが、あまり完全ではないので、参考用です。

まず、Web 計算機のスタイルを手動で記述したくない場合は、コピーするだけで済みます。

<!DOCTYPE html>
<html lang="ja">
 
<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <スタイル>
        * {
            マージン: 0;
            パディング: 0;
            ボックスのサイズ: 境界線ボックス;
        }
 
        .cal {
            幅: 420ピクセル;
            マージン: 100px 自動;
            背景色: #E6E6E6;
 
            パディング: 2px;
            オーバーフロー: 非表示;
        }
 
 
        。見せる {
            位置: 相対的;
            幅: 416ピクセル;
            高さ: 120px;
 
            フォントサイズ: 50px;
            行の高さ: 50px;
            フォントの太さ: 700;
        }
 
        .表示ボタン{
            表示: なし;
 
            位置: 絶対;
            上: -2px;
            右: -2px;
 
            幅: 60ピクセル;
            高さ: 40px;
            行の高さ: 40px;
            テキスト配置: 中央;
            境界線: 透明;
            背景色: #E6E6E6;
 
            フォントサイズ: 30px;
            フォントの太さ: 100;
            カーソル: ポインタ;
        }
 
        .show ボタン:ホバー {
            背景色: #e81123;
            色: #f0f0f0
        }
 
        .res、
        。左、
        。右 {
            位置: 絶対;
            下部: 0;
 
            高さ: 60px;
            行の高さ: 60px;
            パディング: 0 3px;
        }
 
        .res {
            右: 0;
            /* 幅: 100%; */
 
            テキスト配置: 右;
        }
 
        。左 {
            表示: なし;
            背景色: #E6E6E6;
        }
 
        。右 {
            表示: なし;
            右: 0;
            背景色: #E6E6E6;
        }
 
        .left:ホバー、
        .right:hover {
            色: #2e8eda;
        }
 
        .キーボード{
            ディスプレイ: フレックス;
            flex-wrap: ラップ;
            コンテンツの中央揃え: 中央;
        }
 
 
 
        .btn{
            ディスプレイ: フレックス;
            コンテンツの中央揃え: 中央;
 
            幅: 100ピクセル;
            高さ: 60px;
            行の高さ: 60px;
            マージン: 2px;
 
            背景色: #f0f0f0;
            境界線: 透明;
 
            フォントサイズ: 大きい;
        }
 
        .btn:ホバー{
            背景色: #d6d6d6;
        }
 
        .デジタル{
            背景色: #fafafa;
            フォントの太さ: 700;
        }
 
        。等しい {
            背景色: #8abae0;
        }
 
        .equal:hover {
            背景色: #4599db;
        }
    </スタイル>
</head>
 
<本文>
 
    <div class="cal">
        <div class="show">
            <button class="close">×</button>
            <div class="res">0</div>
            <div class="left">&lt;</div>
            <div class="right">&gt;</div>
        </div>
        <div class="キーボード">
            <!-- 0 -->
            <button class="btn percent">%</button>
            <!-- 1 -->
            <button class="btn clearOne">CE</button>
            <!-- 2 -->
            <button class="btn clearAll">C</button>
            <!-- 3 -->
            <button class="btn back">削除</button>
            <!-- 4 -->
            <button class="btn div1">1/x</button>
            <!-- 5 -->
            <button class="btn square">x²</button>
            <!-- 6 -->
            <button class="btn sqrt">²√x</button>
            <!-- 7 -->
            <button class="btn div">÷</button>
            <!-- 8 -->
            <button class="btn digital">7</button>
            <!-- 9 -->
            <button class="btn digital">8</button>
            <!-- 10 -->
            <button class="btn digital">9</button>
            <!-- 11 -->
            <button class="btn mul">×</button>
            <!-- 12 -->
            <button class="btn digital">4</button>
            <!-- 13 -->
            <button class="btn digital">5</button>
            <!-- 14 -->
            <button class="btn digital">6</button>
            <!-- 15 -->
            <button class="btn sub">-</button>
            <!-- 16 -->
            <button class="btn digital">1</button>
            <!-- 17 -->
            <button class="btn digital">2</button>
            <!-- 18 -->
            <button class="btn digital">3</button>
            <!-- 19 -->
            <button class="btn add">+</button>
            <!-- 20 -->
            <button class="btn neg">+/-</button>
            <!-- 21 -->
            <button class="btn digital">0</button>
            <!-- 22 -->
            <button class="btn digital">.</button>
            <!-- 23 -->
            <button class="btn equal">=</button>
        </div>
    </div>
    <script src="./computer.js"></script>
</本文>
 
</html>

js部分:

const bt = document.querySelectorAll('.キーボードボタン')
const close = document.querySelector('.close')
定数 res = document.querySelector('.res')
//数字がクリックされたら、k = 0 にします
一つにしましょう
2つにしましょう
関数 arr(num) {
    bt[num].onclick = 関数(){
        res.innerText += bt[num].innerText
        res.innerText = parseFloat(res.innerText)
        // コンソール.log(1)
 
    }
}
//小数点 //結果の小数点を保持する function fn() {
    (res.innerText.length > 8)の場合{
        res.innerText = res.innerText.slice(0, 10)
    }
    res.innerText == 'NaN'の場合{
        res.innerText = 0
    }
 
}
 
//演算子をクリックすると、関数 symbol(str, fu) {
    bt[str].onclick = 関数(){
        キロ++
        (k > 1) の場合 {
            戻る
        }
        1 = parseFloat(res.innerText)
        // スイッチ (fu) {
        // '+' の場合:
        // 1 += 1
        // 壊す;
        // 場合 '-':
        // 1 -= 1
        // 壊す;
        // 場合 '*':
        // 1 *= 1
        // 壊す;
        // 場合 '/':
        // 1 /= 1
        // 壊す;
        // }
        res.innerText = ''
        close.style.display = 'ブロック'
        close.innerText = bt[str].innerText
        コンソール.log(1)
    }
}
 
アー(21)
アー(18)
アー(17)
アー(16)
アー(14)
アー(13)
アー(12)
アー(10)
アー(9)
アール(8)
アー(22)
//演算シンボル symbol(0)
シンボル(7, '/')
シンボル(11, '*')
シンボル(15, '-')
シンボル(19, '+')
コンソール.log(bt[22].innerText)
bt[22].onclick = 関数(){
    res.innerText += bt[22].innerText
    コンソールログ(565)
}
bt[23].onclick = 関数(){
    2 = parseFloat(res.innerText)
    スイッチ (close.innerText) {
        場合 '%':
            // toFixed(11) は小数点以下11桁を保持します res.innerText = one % two
            0 = 0 です
            壊す;
        ケース '+':
            res.innerText = 1 + 2
            0 = 0 です
            壊す;
        場合 '-':
            res.innerText = 1 - 2 つ
            0 = 0 です
            壊す;
        ケース 'x':
            res.innerText = 1 * 2
            0 = 0 です
            壊す;
        ケース '÷':
            res.innerText = 1 / 2 です
            0 = 0 です
            壊す;
    }
    // コンソールログ(res.innerText.length)
    関数()
 
 
}
bt[1].onclick = 関数(){
    res.innerText = ''
}
bt[2].onclick = 関数(){
    res.innerText = '0'
    close.innerText = 'x'
    close.style.display = ''
    1 = 0
    2 = 0
}
bt[3].onclick = 関数(){
    res.innerText = res.innerText.slice(0, res.innerText.length - 1)
    (res.innerText.length === 0)の場合{
        res.innerText = '0'
        戻る
    }
}
bt[4].onclick = 関数(){
    res.innerText = 1 / parseFloat(res.innerText)
    関数()
}
bt[5].onclick = 関数(){
    res.innerText = parseFloat(res.innerText) * parseFloat(res.innerText)
    関数()
}
 
bt[6].onclick = 関数(){
    res.innerText = Math.sqrt(parseFloat(res.innerText))
    関数()
}
bt[20].onclick = 関数(){
    res.innerText = 0 - parseFloat(res.innerText)
    関数()
}

上記のコードで簡単なコンピュータが作れます。皆様の勉強のお役に立てれば幸いです。また、皆様の123WORDPRESS.COMへの応援もよろしくお願いします。

以下もご興味があるかもしれません:
  • HTML+JS に基づくシンプルな年齢計算ツールの実装
  • JavaScriptで計算機機能を実現するプロセスの詳細な説明
  • JavaScriptはシンプルな計算機能を実装します
  • 計算機機能を実現するjsバージョン
  • シンプルな計算機を実装するためのネイティブ js
  • JavaScript で簡単な計算機を実装する
  • JavaScript を使用した Web 計算機の作成
  • JavaScript の例 - 計算機の実装

<<:  Alpine Dockerイメージフォント問題解決操作

>>:  Windows10のマウスを模倣して境界線を光らせる効果を実現するCSSの詳細解説

推薦する

ポートマッピング後に Docker コンテナが突然接続に失敗する問題のトラブルシューティング プロセス

1. 背景通常、外部サービスを提供する必要がある Docker コンテナの場合、起動時に -p コマ...

MySQL 8.0ドライバとAlibaba Druidバージョン間の互換性の問題を解決

この記事では主に、MySQL 8.0 ドライバーと Alibaba Druid バージョン間の互換性...

MySQLクエリトランザクション処理へのノード接続の実装

目次トピックmysqlの追加、削除、変更、クエリを入力しますMySQL トランザクション処理私は M...

Angularルーティングサブルートの詳細な説明

目次1. サブルート構文2. 例1. 2つの新しいコンポーネントを作成し、その内容を変更する2. ル...

MySQL の時間差関数 TIMESTAMPDIFF と DATEDIFF の使用

時間差関数 TIMESTAMPDIFF と DATEDIFF の使用SQL ステートメント、特にスト...

ルートパスワードを変更するための MySQL 設定、MySQL サーバー接続、MySQL 共通コマンド図

1. ルートパスワードの設定と変更mysql が起動しているかどうかを確認します。起動していない場合...

MySQL インデックス最適化の説明

日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...

Jenkinsを使用してプロジェクトを別のホストにデプロイするプロセス

環境ホスト名IPアドレス仕えるジェンキンス192.168.216.200トムキャット、ジェンキンスサ...

重複リクエストを削除するAxiosのソリューションについての簡単な説明

目次1. 重複したリクエストをキャンセルする2. すべてのリクエストをクリーンアップするこのソリュー...

MySQL で MHA アーキテクチャのデプロイメントを構築する手順

目次マハ1. MAHアーキテクチャの概要2. 適用可能なシナリオ3. MHAの動作原理4. MHAの...

Mysql-connector-java ドライバのバージョン問題の概要

Mysql-connector-java ドライバのバージョンの問題私のデータベースのバージョンは ...

Vue の新しい組み込みコンポーネントの使用方法の詳細な説明

目次1. テレポート1.1 テレポートの紹介1.2 テレポートの使用1.3 プレビュー効果2. サス...

Mysql の読み取り/書き込み分離期限切れに対する一般的な解決策

MySQLの読み書き分離の落とし穴読み取りと書き込みの分離の主な目的は、メイン データベースの負荷を...

nginxでイメージサーバーを構築する手順の詳しい説明(ルートとエイリアスの違い)

インストール手順は省略します( yum -y install nginx;を使用して直接インストール...

html-cssタグのスタイル設定が機能しない2つの理由

1 セミコロン「;」のない CSS スタイル2 タグが閉じられておらず、「>」がありません...