ネイティブ 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の詳細解説

推薦する

CentOS 8.4 での Docker パッケージのオフラインインストールの問題について

使用する仮想マシンは、サーバー環境をシミュレートする CentOS 8.4 です。外部ネットワークに...

HTML のボタン タグをクリックしてページにジャンプする 3 つの方法

方法1: onclickイベントを使用する <input type="button&...

Linuxでawkを使用する方法の詳細な説明

awk を学ぶ前に、sed、grep、tr、cut などのコマンドを学んでおく必要があります。これら...

Dockerがコンテナを起動するたびに、IPとホストが指定した操作が実行されます。

序文Dockerを使ってHadoopクラスタを起動するたびに、ネットワークカードの再バインド、IPの...

LINUX でプロセスを表示する 4 つの方法 (要約)

プロセスは CPU とメモリ内で実行されるプログラム コードであり、各プロセスは 1 つ以上のプロセ...

HTML で JavaScript の全選択/全選択解除操作を実行するサンプル コード

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

MySQL 文字列インデックスのより合理的な作成ルールに関する議論

序文MySQL インデックスの使用に関しては、これまでインデックスの最左接頭辞ルール、インデックス ...

nginx で複数のフロントエンド プロジェクトをデプロイするいくつかの方法

nginx を使用して 1 つのサーバーに複数のフロントエンド プロジェクトをデプロイする 3 つの...

ノード スキャフォールディングを使用してトークン検証を実装するサーバーを構築する方法

コンテンツスキャフォールディングを使用してノードプロジェクトを素早く構築するデータベースとやり取りす...

CentOS 8 に MySql をインストールしてリモート接続を許可する方法

ダウンロードしてインストールします。まず、システムに MySQL または MariaDB があるかど...

CSS3 テキストシャドウ text-shadow プロパティの詳細な説明

テキストシャドウ text-shadow プロパティの効果: 1. 右下隅の影、左下隅の影、左上隅の...

vue-nuxt ログイン認証の実装

目次導入リンク始めるコードを読み進めてくださいプロキシ設定傍受を要求する異なるプレフィックスを持つイ...

MySQLでページングクエリを実装する方法

SQL ページング クエリ:背景会社のシステムには、構成管理用のプラットフォーム、いわゆる CRUD...

MySQLの遅いクエリ問題の詳細な分析データ送信

例を通して、MySQL のデータ テーブル送信のクエリが遅い問題の解決策を共有しました。最近、コード...

Linux で MySQL のスケジュールバックアップを実装する方法

実際のプロジェクトでは、緊急事態を防ぐためにデータベースを頻繁にバックアップする必要があります。しば...