<style>
.container{background:#f86984;width:540px;margin:0 auto;padding:30px 20px;border-radius:15px;color:#fff;font-weight:bold;box-sizing:border-box;}
.container .title{line-height:30px;font-size:25px;}
.container input,.container button{background:#56606e;border:solid 1px #fff;border-radius:5px;color:#fff;font-weight:bold}
.container .input{display:block;height:60px;width:100%;margin:10px 0 20px;text-align:right;font-size:18px}
.container .btncontainer{border:solid 2px #fff;border-radius:10px;padding:5px 10px;background:#e99fa9;display:flex;flex-wrap:wrap;justify-content:space-between}
.container .btncontainer button{width:80px;box-sizing:border-box;margin-right:10px;margin-bottom:10px;font-size:25px;height:50px}
.container .btncontainer button.op{width:95px;background:#86ed9d}
.container .btncontainer button:nth-child(5n){margin-right:0}
.container .btncontainer button.nomb{margin-bottom:0}
</style>
<div class="container">
<div class="title">@我的计算器</div>
<input type="text" class="input" readonly id="txt" />
<div class="btncontainer">
<button>7</button>
<button>8</button>
<button>9</button>
<button class="op" style="background:#f94159">Back</button>
<button class="op" style="background:#f94159">C</button>
<button>4</button>
<button>5</button>
<button>6</button>
<button class="op">X</button>
<button class="op">/</button>
<button>1</button>
<button>2</button>
<button>3</button>
<button class="op">+</button>
<button class="op">-</button>
<button class="nomb">0</button>
<button class="nomb">00</button>
<button class="nomb">.</button>
<button class="op nomb">%</button>
<button class="op nomb" style="background:#3290ff">=</button>
</div>
</div>
<script>
function clickHandler() {//按钮点击事件处理函数
let t = this.innerText.trim();
if (t == 'C') txt.value = '';//清除
else if (t == 'Back') txt.value = txt.value.substring(0, txt.value.length - 1);//删除最后一个字符
else if (t == '=') {//计算
try {
let result = eval(txt.value);
txt.value = result;
}
catch (e) { alert('表达式有错误!') }
}
else {//表达式组合
if (t == 'X') t = '*';
txt.value += t;
}
}
let txt = document.getElementById('txt');//获取输入框容器
let buttons = document.querySelectorAll('.btncontainer button');//获取按钮
//按钮事件绑定
for (let btn of buttons) btn.onclick = clickHandler;
</script>
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!<!-- 这里我们同在在wxml里写style来实现样式的动态改变 -->
<text class="code" style="color:{{codeColor}};" >获取验证码</text>
这个时候我们在去看第一个,倒计时里写的下面这段代码。这里就是用来动态改变按钮上文字颜色的方法。
if (countDownTime < 2) {
that.setData({
codeColor: "#0271c1",
codeText: "获取验证码"
})
} else {
that.setData({
codeColor: "#e6252b",
codeText: "60s"
})
}
我们这里还有做一步处理,就是在倒计时过程中,用户不能再次点击获取验证吗的按钮,获取点击时要给用户提示。
//老师微信2501902696
let timeNum = 6 //60秒倒计时
let countDownTime = timeNum
let timer; //计时器
Page({
data: {
codeColor: "#0271c1",
codeText: "获取验证码"
},
//获取验证码
getCode() {
if (countDownTime == timeNum) {
this.setInterval()
this.setData({
codeColor: "#e6252b",
codeText: countDownTime + "s"
})
} else {
wx.showToast({
title: '请等待验证码',
icon: "none"
})
}
},
// 计时器
setInterval: function() {
const that = this
timer = setInterval(function() { // 设置定时器
countDownTime--
if (countDownTime < 2) {
clearInterval(timer)
that.setData({
codeColor: "#0271c1",
codeText: "获取验证码"
})
countDownTime = timeNum
} else {
that.setData({
codeColor: "#e6252b",
codeText: countDownTime + "s"
})
}
console.log(countDownTime + "s")
}, 1000)
},
})
这样我们就能实现微信小程序在登录或者注册时实现验证码倒计时的效果了。