JavaScriptで計算機機能を実現するプロセスの詳細な説明

JavaScriptで計算機機能を実現するプロセスの詳細な説明

1. 電卓機能の紹介

データの加算(+)、減算(-)、乗算(*)、除算(/)、剰余演算(%)に加え、データの削除(Del)、クリア機能(C)を実現できます。

2. 計算機ページのデザイン

1. ナビゲーションバー

{
  "ナビゲーションバーの背景色": "#fff",
  "ナビゲーションバーのテキストスタイル": "黒",
  "navigationBarTitleText": "電卓"
}

2. データ部分

データ:{
  // データには初期データ num: "1" のみが配置されます。
  op:" "//操作シンボルを記録}

3. index.wxmlレイアウトページ

<ビュークラス="結果">
    <view class="result-num">{{num}}</view>
    <view class="result-op">{{op}}</view>
</ビュー>
<view class="btns">
  <表示>
    <view hover-class="bg" bindtap="reSetBtn">C</view>
    <view hover-class="bg" bindtap="delBtn">削除</view>
    <view hover-class="bg" bindtap="opBtn" data-val="%">%</view>
    <view hover-class="bg" bindtap="opBtn" data-val="/">/</view>
  </ビュー>
  <表示>
    <view hover-class="bg" bindtap="numBtn" data-val="7">7</view>
    <view hover-class="bg" bindtap="numBtn" data-val="8">8</view>
    <view hover-class="bg" bindtap="numBtn" data-val="9">9</view>
    <view hover-class="bg" bindtap="opBtn" data-val="*">*</view>
  </ビュー>
  <表示>
    <view hover-class="bg" bindtap="numBtn" data-val="4">4</view>
    <view hover-class="bg" bindtap="numBtn" data-val="5">5</view>
    <view hover-class="bg" bindtap="numBtn" data-val="6">6</view>
    <view hover-class="bg" bindtap="opBtn" data-val="-">-</view>
  </ビュー>
  <表示>
    <view hover-class="bg" bindtap="numBtn" data-val="1">1</view>
    <view hover-class="bg" bindtap="numBtn" data-val="2">2</view>
    <view hover-class="bg" bindtap="numBtn" data-val="3">3</view>
    <view hover-class="bg" bindtap="opBtn" data-val="+">+</view>
  </ビュー>
  <表示>
    <view hover-class="bg" bindtap="numBtn" data-val="0">0</view>
    <view hover-class="bg" bindtap="doBtn" data-val=".">.</view>
    <view hover-class="bg" bindtap="opBtn" data-val="=">=</view>
  
  </ビュー>
</ビュー>

4. index.css スタイルページ

ページ{
  ディスプレイ: フレックス;
  flex-direction: column;/*プロジェクトの主軸の方向*/
  高さ: 100%;
}
。結果{
  flex: 1;/*要素を均等に配置する*/
  背景: #f3f6fe;
  位置: 相対的;
}
.結果番号{
  position: absolute;/*父の息子は死んだ*/
  フォントサイズ: 20pt;
  下部:5vh;
  右:3vw;
}
 
.結果-op{
  位置: 絶対;
  フォントサイズ: 15pt;
  下部:1vh;
  右:3vw;
}
.btns{
  フレックス: 1;
  ディスプレイ: フレックス;
  flex-direction: column;/*内部の大きなビューは垂直に配置されます*/
  フォントサイズ: 17pt;
  上境界線: 1rpx 実線 #ccc;
  左境界線: 1rpx 実線 #ccc;
}
.btns>表示{
  フレックス: 1;
  ディスプレイ: フレックス;
}
.btns>ビュー>ビュー{
  flex-basis: 25%;/*幅の比率*/
  下部境界線: 1rpx 実線 #ccc;
  右境界線: 1rpx 実線 #ccc;
  box-sizing: border-box;/*境界比率を加算*/
  ディスプレイ:フレックス;
  アイテムの位置を中央揃えにします。
  justify-content: center;/*2つの文を組み合わせるとテキストが中央に配置されます*/
}
.btns>ビュー:最後の子>ビュー:最初の子{
  フレックスベース: 50%;
}
.btns>ビュー:最初の子>ビュー:最初の子{
  色:#f00;
}
.btns>ビュー>ビュー:最後の子{
  色: #fcBe00;
}
.bg{
  背景: #eee;
}

5. 運用結果

3. 機能実装部分

1. 削除機能

substr() 関数には 2 つのパラメータがあり、最初のパラメータはインターセプションの開始位置を示し、2 番目のパラメータはインターセプションの長さを示します。

delBtn:関数(e){
    var num=this.data.num.substr(0,this.data.num.length-1);
    this.setData({num:num===""? "0":num})
  }

2. クリア機能

 reSetBtn:function(e){
    // すべてが初期状態になる this.result=null;
    this.isClear = false;
    this.setData({num:"0",op:""})
  }

3. その他の機能

データ:{
  // データには初期データ num: "1" のみが配置されます。
  op:" "//操作シンボルを記録},
  結果:null、
  isClear:false, // ステータスを記録するために使用 numBtn:function(e){
    var num =e.target.dataset.val //data-val の値を取得します //0 を複数回押すか、isClear が true の場合、元のデータはクリアされ、押された番号が表示されます if(this.data.num==='0'||this.isClear){
      this.setData({num:num})//取得した値をresultに渡す
      this.isClear=false
    }それ以外{
        this.setData({num:this.data.num+num})
    }
  },
 
  opBtn:関数(e){
    var op=this.data.op; //まず現在のオペレーションを記録する
    var num=Number(this.data.num);//現在のnumデータを取得します this.setData({op:e.target.dataset.val});//押されたボタンを変数opに渡します
    if(this.isClear){//上記の操作では、演算子が押された場合、isclearはtrueになります。ここでは、プラスキーの複数回の押下を避けるために、次のように動作します。
      戻る
    }
    this.isClear=true; //ユーザーが計算ボタンを押してから数字を押すと、元の数字はクリアされます if (this.result===null) {
      this.result=数値;
      戻る
    }
    if(op==="+"){
      this.result=this.result+数値
      this.setData({num:this.result})//追加された結果をnumに設定する
    }そうでない場合(op==="-"){
      this.result=この結果番号
    }それ以外の場合(op==="*"){
      this.result=this.result*num
    }それ以外の場合(op==="/"){
      this.result=この結果/数値
    }それ以外の場合(op==="%"){
      this.result=this.result%num
    }
    this.setData({num:this.result+""})//文字列型に変換},
  doBtn:function(e){
    if(this.isClear){//最後の操作が終了したことを意味します。最初に.を押すと、this.setData({num:"0."});
      this.isClear = false;
      戻る
    }
    //複数回押す場合。
    if(this.data.num.indexOf(".")>=0){
      戻る
    }
    //通常の数値の後に this.setData({num:this.data.num+"."}) が続きます
  },

これで、JavaScript で計算機機能を実装する詳細なプロセスに関するこの記事は終了です。より関連性の高い JavaScript 計算機コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

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

<<:  Douyin ロゴを作成する手順の CSS3 分析

>>:  Dockerは複数のポートマッピングコマンドを有効にします

推薦する

WeChatアプレットのサイレントログインとカスタムログイン状態の維持の詳細な説明

目次1. 背景2. サイレントログインとは何ですか? 3. カスタムログイン状態を維持する方法4. ...

ブラウザのスクロールバーのスタイルを変更するための純粋な CSS の例

CSSを使用してブラウザのスクロールバーのスタイルを変更する ::-webkit-スクロールバー{ ...

Docker のタイムゾーンの問題とデータ移行の問題

最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...

HTML でテーブルを分割および結合する (colspan、rowspan)

このコードは水平マージを示しています。 <!DOCTYPE html PUBLIC "...

MySQL アップグレードのベストプラクティス

MySQL 5.7 には、オンライン DDL、マルチソース レプリケーション、拡張された半同期、テー...

Reactは動的ポップアップウィンドウコンポーネントを実装します

UI コンポーネントを作成するときに、アニメーションを考慮しなければ、アニメーションを実現するのは非...

ブラウザは関連するHTTPヘッダーをキャッシュし、HTTPリクエストの数を最小限に抑えます。

最近、Yahoo の 34 の黄金律を読み、ウェブサイトのパフォーマンスを最適化する方法を学びました...

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...

HTML DOM入門_PowerNode Javaアカデミー

DOMとは何ですか? JavaScript を使用すると、HTML ドキュメント全体を再構築できます...

JavaScript でローカル変数をグローバル変数に変換する方法

まず関数の自己呼び出しを知る必要がある関数の自己呼び出し - 自己呼び出し関数1 回限りの関数 - ...

Nginx リクエスト制限の設定方法

Nginx は、多くの優れた機能を備えた強力で高性能な Web およびリバース プロキシ サーバーで...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

Vue で手ぶれ補正とスロットリングを使用する方法

目次序文コンセプト安定意味使用シナリオコードVueでの使用スロットリング意味使用シナリオコードVue...

CentOS7でMySQL 5.7をアンインストールする方法

MySQLに何がインストールされているか確認する rpm -qa | grep -i mysql n...

nginx で仮想ホストを構成するための詳細な手順

仮想ホストは、インターネット上で実行されているサーバー ホストを複数の「仮想」ホストに分割する特殊な...