微信小程序 計算器(附源碼鏈接)

一、界面

1坊罢、主要界面:基本計算


2续担、擴展界面:單位計算


3、其它界面

房貸計算活孩、正則表達式等物遇,具體可掃碼試用


二、代碼:

1、主界面

index.js

Page({

data: {

idb: “back”,

idc: “clear”,

idt: “toggle”,

idadd: “+”,

id9: “9”,

id8: “8”,

id7: “7”,

idj: “-”,

id6: “6”,

id5: “5”,

id4: “4”,

idx: “×”,

id3: “3”,

id2: “2”,

id1: “1”,

iddiv: “÷”,

id0: “0”,

idd: “.”,

ide: “=”,

screenData: “0”,

operaSymbo: { “+”: “+”, “-”: “-”, “×”: “*”, “÷”: “/”, “.”: “.” },

lastIsOperaSymbo: false,

iconType: ‘waiting_circle’,

iconColor: ‘white’,

arr: [],

logs: []

},

onLoad: function (options) {

// 頁面初始化 options為頁面跳轉(zhuǎn)所帶來的參數(shù)

},

onReady: function () {

// 頁面渲染完成

},

onShow: function () {

// 頁面顯示

},

onHide: function () {

// 頁面隱藏

},

onUnload: function () {

// 頁面關(guān)閉

},

clickBtn: function (event) {

var id = event.target.id;

if (id == this.data.idb) { //退格←

var data = this.data.screenData;

if (data == “0”) {

return;

}

data = data.substring(0, data.length - 1);

if (data == “” || data == “-”) {

data = 0;

}

this.setData({ “screenData”: data });

this.data.arr.pop();

} else if (id == this.data.idc) { //清屏C

this.setData({ “screenData”: “0” });

this.data.arr.length = 0;

} else if (id == this.data.idt) { //正負號+/-

var data = this.data.screenData;

if (data == “0”) {

return;

}

var firstWord = data.charAt(0);

if (data == “-”) {

data = data.substr(1);

this.data.arr.shift();

} else {

data = “-” + data;

this.data.arr.unshift("-");

}

this.setData({ “screenData”: data });

} else if (id == this.data.ide) { //等于=

var data = this.data.screenData;

if (data == “0”) {

return;

}

//eval是js中window的一個方法询兴,而微信頁面的腳本邏輯在是在JsCore中運行乃沙,JsCore是一個沒有窗口對象的環(huán)境,所以不能再腳本中使用window诗舰,也無法在腳本中操作組件

//var result = eval(newData);

var lastWord = data.charAt(data.length);

if (isNaN(lastWord)) {

return;

}

var num = “”;

var lastOperator = “”;

var arr = this.data.arr;

var optarr = [];

for (var i in arr) {

if (isNaN(arr[i]) == false || arr[i] == this.data.idd || arr[i] == this.data.idt) {

num += arr[i];

} else {

lastOperator = arr[i];

optarr.push(num);

optarr.push(arr[i]);

num = “”;

}

}

optarr.push(Number(num));

var result = Number(optarr[0]) * 1.0;

console.log(result);

for (var i = 1; i < optarr.length; i++) {

if (isNaN(optarr[i])) {

if (optarr[1] == this.data.idadd) {

result += Number(optarr[i + 1]);

} else if (optarr[1] == this.data.idj) {

result -= Number(optarr[i + 1]);

} else if (optarr[1] == this.data.idx) {

result = Number(optarr[i + 1]);

} else if (optarr[1] == this.data.iddiv) {

result /= Number(optarr[i + 1]);

}

}

}

//存儲歷史記錄

this.data.logs.push(data + ‘=’ + result);

wx.setStorageSync(“calclogs”, this.data.logs);

this.data.arr.length = 0;

this.data.arr.push(result);

this.setData({ “screenData”: result + “” });

} else {

if (this.data.operaSymbo[id]) { //如果是符號±/

if (this.data.lastIsOperaSymbo || this.data.screenData == “0”) {

return;

}

}

var sd = this.data.screenData;

var data;

if (sd == 0) {

data = id;

} else {

data = sd + id;

}

this.setData({ “screenData”: data });

this.data.arr.push(id);

if (this.data.operaSymbo[id]) {

this.setData({ “l(fā)astIsOperaSymbo”: true });

} else {

this.setData({ “l(fā)astIsOperaSymbo”: false });

}

}

},

history: function () {

wx.navigateTo({

url: ‘…/history/history’

})

}

})

2警儒、index.wxml

<view class="content">

? <view class="layout-top">

? ? <view class="screen">

? ? {{screenData}}

? ? </view>

? </view>


? <view class="layout-bottom">

? ? <view class="btnGroup">

? ? ? <view class="item orange" bindtap="clickBtn" id="{{idc}}">С</view>

? ? ? <view class="item orange" bindtap="clickBtn" id="{{idb}}">←</view>

? ? ? <view class="item orange" bindtap="clickBtn" id="{{idt}}">+/-</view>

? ? ? <view class="item orange" bindtap="clickBtn" id="{{idadd}}">+</view>

? ? </view>

? ? <view class="btnGroup">

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id9}}">9</view>

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id8}}">8</view>

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id7}}">7</view>

? ? ? <view class="item orange" bindtap="clickBtn" id="{{idj}}">-</view>

? ? </view>

? ? <view class="btnGroup">

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id6}}">6</view>

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id5}}">5</view>

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id4}}">4</view>

? ? ? <view class="item orange" bindtap="clickBtn" id="{{idx}}">×</view>

? ? </view>

? ? <view class="btnGroup">

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id3}}">3</view>

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id2}}">2</view>

? ? ? <view class="item blue" bindtap="clickBtn" id="{{id1}}">1</view>

? ? ? <view class="item orange" bindtap="clickBtn" id="{{iddiv}}">÷</view>

? ? </view>

? ? <view class="btnGroup">

? ? ? <view class="item blue zero" bindtap="clickBtn" id="{{id0}}">0</view>

? ? ? <view class="item blue" bindtap="clickBtn" id="{{idd}}">.</view>

? ? ? <view class="item orange" bindtap="clickBtn" id="{{ide}}">=</view>

? ? </view>

? </view>

</view>

3、index.wcss

/* //height: 90%;*/

.content {?

? ? display: flex;

? ? flex-direction: column;

? ? align-items: center;

? ? background-color: #ccc;

? ? font-family: "Microsoft YaHei";

? ? overflow-x: hidden;

}

.layout-top{

? ? width: 100%;

? ? margin-bottom: 10rpx;

}

.layout-bottom{

? ? width: 100%;

}

.screen {

? ? text-align: right;

? ? width: 100%;

? ? line-height: 200rpx;

? ? padding: 0 10rpx;

? ? font-weight: bold;

? ? font-size: 60px;

? ? box-sizing: border-box;

? ? border-top: 1px solid #fff;

}

.btnGroup {

? ? display: flex;

? ? flex-direction: row;

? ? flex: 1;

? ? width: 100%;

? ? height: 5rem;

? ? background-color: #fff;

}

.item {

? ? width:25%;

? ? display: flex;

? ? align-items: center;

? ? flex-direction: column;

? ? justify-content: center;

? ? margin-top: 1px;

? ? margin-right: 1px;

}

.item:active {

? ? background-color: #ff0000;

}

.zero{

? ? width: 50%;

}

.orange {

? ? color: #fef4e9;

? ? background: #f78d1d;

? ? font-weight: bold;

}

.blue {

? ? color:#d9eef7;

? ? background-color: #0095cd;

}

.iconBtn{

? ? display: flex;

}

.icon{

? display: flex;

? align-items: center;

? width:100%;

? justify-content: center;

}

三眶根、csdn下載鏈接:

https://download.csdn.net/download/kevin_lp/11931364

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜀铲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子汛闸,更是在濱河造成了極大的恐慌蝙茶,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诸老,死亡現(xiàn)場離奇詭異,居然都是意外死亡钳恕,警方通過查閱死者的電腦和手機别伏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忧额,“玉大人厘肮,你說我怎么就攤上這事∧婪” “怎么了类茂?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長托嚣。 經(jīng)常有香客問我巩检,道長,這世上最難降的妖魔是什么示启? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任兢哭,我火速辦了婚禮,結(jié)果婚禮上夫嗓,老公的妹妹穿的比我還像新娘迟螺。我一直安慰自己,他們只是感情好舍咖,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布矩父。 她就那樣靜靜地躺著,像睡著了一般排霉。 火紅的嫁衣襯著肌膚如雪窍株。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音夹姥,去河邊找鬼杉武。 笑死,一個胖子當著我的面吹牛辙售,可吹牛的內(nèi)容都是我干的轻抱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼旦部,長吁一口氣:“原來是場噩夢啊……” “哼祈搜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起士八,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤容燕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后婚度,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蘸秘,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年蝗茁,在試婚紗的時候發(fā)現(xiàn)自己被綠了醋虏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡哮翘,死狀恐怖颈嚼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饭寺,我是刑警寧澤阻课,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站艰匙,受9級特大地震影響限煞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旬薯,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一晰骑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绊序,春花似錦硕舆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至阶捆,卻和暖如春凌节,著一層夾襖步出監(jiān)牢的瞬間钦听,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工倍奢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留朴上,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓卒煞,卻偏偏與公主長得像痪宰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子畔裕,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容