欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

鴻蒙JS實戰(zhàn)之計算器功能開發(fā)實例

 更新時間:2024年02月17日 09:43:18   作者:程序員沙蛙  
這篇文章主要給大家介紹了關于鴻蒙Js實戰(zhàn)之計算器功能開發(fā)的相關資料,計算器是我們生活中經(jīng)常使用的應用,此項目是基于Harmony實現(xiàn)的簡易計算器,需要的朋友可以參考下

場景:

通過動態(tài)設置按鈕組件button實現(xiàn)計算器的鍵盤,通過文本text顯示計算的表達書,可以計算+,-,*,/,可以一個一個移除,可以重置 等。

下面我們開始今天的文章,還是老規(guī)矩,通過如下幾點來說:

1,實現(xiàn)思路

2,代碼解析

3,實現(xiàn)效果

3,總結

一,實現(xiàn)思路

計算器的鍵盤,本來是想使用grid的 但是有一些默認屬性不好控制,等后續(xù)組件完善了在做優(yōu)化,目前grid適合一些均衡布局,通過監(jiān)聽計算符號添加判斷邏輯,計算結果也是通過添加的計算類型進行計算,目前支持一級計算,后面做連續(xù)計算。

二,代碼解析

子組件:

1,hml文件

實用了四個for循環(huán)實現(xiàn)了鍵盤效果,后面想了一下其實一個就能搞定,動態(tài)換行就行,時間有限后續(xù)優(yōu)化(總感覺計算器挺簡單,其實做起來還需要點時間)

<div class="container">
    <text class="input-content">{{inputcontent}}</text>
    <div class="menu-content">
        <div class="caluater" for="{{ caluater }}" >
            <button class="content" onclick="calculatorClick({{ $item.id }})">{{ $item.id }}</button>
        </div>
    </div>
    <div class="menu-content">
        <div class="caluater" for="{{ caluater1 }}">
            <button class="content2" on:click="calculatorClick({{ $item.id }})">{{ $item.id }}</button>
        </div>
    </div>
    <div class="menu-content">
        <div class="caluater" for="{{ caluater2 }}">
            <button class="content2" on:click="calculatorClick({{ $item.id }})">{{ $item.id }}</button>
        </div>
    </div>
 
    <div class="list2-content">
        <div class="list3-content">
            <div class="list2-content">
                <div class="caluater" for="{{ caluater3 }}">
                    <button class="content2" on:click="calculatorClick({{ $item.id }})">{{ $item.id }}</button>
                </div>
            </div>
            <div class="list2-content">
                <div class="caluater" for="{{ caluater4 }}">
                    <button class="content2" on:click="calculatorClick({{ $item.id }})">{{ $item.id }}</button>
                </div>
            </div>
        </div>
        <button class="equals" onclick="calculatorResult">=</button>
    </div>
</div>

2,css文件

樣式比較簡單,主要控制鍵盤和表達式文本的顏色和大小

.container {
    flex-direction: column;
    justify-content: flex-end;
    align-items: flex-end;
    width: 100%;
}
.input-content{
    background-color: #00ffffff;
    text-align: right;
    font-size: 25px;
    padding: 10px;
    font-weight: bold;
}
.menu-content{
    width: 100%;
    background-color: brown;
    allow-scale: true;
}
.caluater {
    flex-direction: row;
    width: 100%;
    height: 70px;
    background-color: #00ffffff;
    margin-left: 5px;
    margin-right: 5px;
    margin-top: 10px;
}
.content{
    font-size: 30px;
    font-weight: bold;
    radius: 10px;
    width: 100%;
    height: 100%;
    text-color: #007EFF;
    background-color: #A8CCFB;
}
.content2{
    font-size: 30px;
    font-weight: bold;
    radius: 10px;
    width: 100%;
    height: 100%;
    text-color: #000000;
    background-color: #dddcdc;
}
.list2-content{
    flex-direction: row;
    justify-content: center;
    align-items: center;
    background-color: brown;
}
.list3-content{
    flex-direction: column;
    margin-bottom: 10px;
}
.equals{
    width: 30%;
    height: 150px;
    font-size: 30px;
    font-weight: bold;
    radius: 10px;
    margin-left: 5px;
    margin-right: 5px;
}

3,js文件

js中主要實現(xiàn)邏輯,請看具體計算的判斷。

import prompt from '@system.prompt';
export default {
    data: {
        title: "",
        inputcontent: "",
        number1: "",
        number2: "",
        type: "",
        caluater: [
            {
                'id': "C",
            },
            {
                'id': "÷",
            },
            {
                'id': "×",
            },
            {
                'id': "←",
            }
        ],
        caluater1:[
            {
                'id': "7",
            },
            {
                'id': "8",
            },
            {
                'id': "9",
            },
            {
                'id': "+",
            }
        ],
        caluater2:[
            {
                'id': "4",
            },
            {
                'id': "5",
            },
            {
                'id': "6",
            },
            {
                'id': "-",
            }
        ],
        caluater3:[
            {
                'id': "1",
            },
            {
                'id': "2",
            },
            {
                'id': "3",
            }
        ],
        caluater4:[
            {
                'id': "%",
            },
            {
                'id': "0",
            },
            {
                'id': ".",
            }
        ]
    },
    onInit() {
    },
    calculatorClick(result){
        this.inputcontent = this.inputcontent+"";
        let str = this.inputcontent
            .substring(this.inputcontent.length-1, this.inputcontent.length);
       switch(result) {
        case "←":
            if(this.inputcontent.length > 0) {
                let str = this.inputcontent
                    .substring(0, this.inputcontent.length - 1);
                this.inputcontent = str;
            }
           break;
        case "C":
            this.inputcontent = "";
           break;
        case "+":
            this.calcula(str,result,"+");
           break;
       case "-":
           this.calcula(str,result,"-");
           break;
       case "×":
           this.calcula(str,result,"×");
           break;
       case "÷":
           this.calcula(str,result,"÷");
           break;
       case ".":
           if(this.inputcontent.length > 0 && str != ".") {
               this.inputcontent += result;
           }
           break;
        default:
            this.inputcontent += result;
           break;
        }
    },
    calcula(str,result,cla){
        if(this.inputcontent.length > 0 && str != "+" && str != "-" && str != "×" && str != "÷") {
            this.type = cla;
            this.inputcontent += result;
        } else {
            this.calculatorResult();
        }
    },
    calculatorResult(){// 計算結果
        var temp = this.inputcontent.split(this.type);
        console.log("this.inputcontent = "+this.inputcontent)
        let str = this.inputcontent
            .substring(this.inputcontent.length-1, this.inputcontent.length);
        console.log("this.type = "+this.type)
        if (this.type == "+") {  // 加法計算
           if(temp.length > 1) {
               console.log("temp = "+temp)
               var num1 = parseFloat(temp[0]);
               var num2 = parseFloat(temp[1]);
               console.log("num1 = "+num1)
               console.log("num2 = "+num2)
               console.log("str = "+str)
               if(str != "+") {
                   this.inputcontent = num1 + num2;
                   this.type = "";
               }
           }
        } else if(this.type == "-") {  // 減法計算
            if(temp.length > 1) {
                var num1 = parseFloat(temp[0]);
                var num2 = parseFloat(temp[1]);
                if(str != "-") {
                    this.inputcontent = num1 - num2;
                    this.type = "";
                }
            }
        } else if(this.type == "×") {  // 乘法計算
            if(temp.length > 1) {
                var num1 = parseFloat(temp[0]);
                var num2 = parseFloat(temp[1]);
                if(str != "×") {
                    this.inputcontent = num1 * num2;
                    this.type = "";
                }
            }
        } else if(this.type == "÷") {  // 除法計算
            if(temp.length > 1) {
                var num1 = parseFloat(temp[0]);
                var num2 = parseFloat(temp[1]);
                if(str != "÷") {
                    this.inputcontent = num1 / num2;
                    this.type = "";
                }
            }
        }
    }
}

為了目前的單一計算,現(xiàn)在做了不少的判斷,后續(xù)做連續(xù)計算的時候會有改動,但是目前正常計算沒有問題,期待后續(xù)更新。

三,實現(xiàn)效果

四,總結

開發(fā)計算器最主要的是連續(xù)計算,連續(xù)計算需要添加計算優(yōu)先級邏輯,后續(xù)考慮通過遍歷來判斷里面的計算。

計算器界面開發(fā)通過常用組件就能實現(xiàn),實現(xiàn)方式可以自己定。

在開發(fā)中驗證了NaN,這個空的判斷很多方式無效的,他是針對Number做的判斷。

到此這篇關于鴻蒙Js實戰(zhàn)之計算器功能開發(fā)的文章就介紹到這了,更多相關鴻蒙JS計算器功能開發(fā)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript常用內置對象用法分析

    JavaScript常用內置對象用法分析

    這篇文章主要介紹了JavaScript常用內置對象用法,簡單總結分析了javascript String對象、Date對象、Math類、數(shù)組對象等常見對象的相關功能、方法與使用注意事項,需要的朋友可以參考下
    2019-07-07
  • 封裝好的一個萬能檢測表單的方法

    封裝好的一個萬能檢測表單的方法

    這篇文章主要介紹了一個封裝好的萬能檢測表單的方法,非常的好用,使用也很方便,這里推薦給小伙伴們。
    2015-01-01
  • JSONP跨域模擬百度搜索

    JSONP跨域模擬百度搜索

    這篇文章主要介紹了JSONP跨域模擬百度搜索,JSONP是JSON?with?padding?的簡寫,應用JSON的一種新方法,在后來的Web服務中非常流行,JSONP看起來與JSON差不多,只不過是被包含在函數(shù)中調用的JSON,對此感興趣的小伙伴可以參考一下下面文章內容
    2021-12-12
  • layui中l(wèi)ayer前端組件實現(xiàn)圖片顯示功能的方法分析

    layui中l(wèi)ayer前端組件實現(xiàn)圖片顯示功能的方法分析

    這篇文章主要介紹了layui中l(wèi)ayer前端組件實現(xiàn)圖片顯示功能的方法,結合實例形式分析了layui中l(wèi)ayer組件調用圖片顯示功能的操作方法與相關注意事項,并提供了layer與layui源碼下載,需要的朋友可以參考下
    2017-10-10
  • js開發(fā)插件實現(xiàn)tab選項卡效果

    js開發(fā)插件實現(xiàn)tab選項卡效果

    這篇文章主要為大家詳細介紹了js開發(fā)插件實現(xiàn)tab選項卡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 引入autocomplete組件時JS報未結束字符串常量錯誤

    引入autocomplete組件時JS報未結束字符串常量錯誤

    在引入jQuery的autocomplete組件時,遇到js報未結束字符串常量錯誤,原因及解決方法如下,大家可以參考下
    2014-03-03
  • JavaScript定時器實現(xiàn)無縫滾動圖片

    JavaScript定時器實現(xiàn)無縫滾動圖片

    這篇文章主要為大家詳細介紹了JavaScript定時器實現(xiàn)無縫滾動圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Webpack中publicPath使用詳解

    Webpack中publicPath使用詳解

    最近自己在搭建一個基于webpack的react項目,遇到關于output.publicPath和webpack-dev-server中publicPath的問題,所以自己研究了下并寫下本文記錄。感興趣的小伙伴們可以參考一下
    2021-06-06
  • 微信小程序基于slider組件動態(tài)修改標簽透明度的方法示例

    微信小程序基于slider組件動態(tài)修改標簽透明度的方法示例

    這篇文章主要介紹了微信小程序基于slider組件動態(tài)修改標簽透明度的方法,可通過slider組件拖動實現(xiàn)圖片透明度的改變功能,涉及微信小程序事件綁定、base64格式圖片載入及slider組件使用技巧,需要的朋友可以參考下
    2017-12-12
  • JS小知識之如何將CSV轉換為JSON字符串

    JS小知識之如何將CSV轉換為JSON字符串

    CSV文件一般是以逗號為分隔值的文件(Comma-Separated?Values,CSV,有時也稱為字符分隔值,因為分隔字符也可以不是逗號),其文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本),下面這篇文章主要給大家介紹了JS小知識之如何將CSV轉換為JSON字符串的相關資料,需要的朋友可以參考下
    2023-06-06

最新評論