前端制作计算器

用html+css+js完成计算器的基本功能,代码如下:

HTML代码

        <div id="four">		
			<div class="evaluator">
				<div class="input">
					<input type="text">
				</div>
				<table>
					<tr>
						<td>7</td>
						<td>8</td>
						<td>9</td>
						<td>+</td>
					</tr>
					<tr>
						<td>4</td>
						<td>5</td>
						<td>6</td>
						<td>-</td>
					</tr>
					<tr>
						<td>1</td>
						<td>2</td>
						<td>3</td>
						<td>*</td>
					</tr>
					<tr>
						<td>0</td>
						<td>c</td>
						<td>=</td>
						<td>/</td>
					</tr>
				</table>
			</div>
		</div>

CSS代码

#four .evaluator{
    border: 2px gray solid;
    width: 240px;
}
#four input{
    width: 200px;
    padding: 5px;
    
}
#four .input{
    width: 200px;
    margin: 10px auto;
}
#four table{
    width: 240px;
    border-collapse:separate;
    border-spacing:15px 15px;
}
#four td{
    padding: 5px 15px;
    border: 1px black solid;
}
#four td:active{
    background-color: gray;
}

JS代码

const input = document.querySelector("#four input");
const tdList = document.querySelectorAll("#four td");
let evalstr = "";
console.log(tdList);
for(let i = 0;i < tdList.length;i++){
    tdList[i].addEventListener("click",()=>{
        if(tdList[i].innerText == "c"){
            evalstr = "";
        }else if(tdList[i].innerText == "="){
            if(evalstr.length>0&&Object.is(Number(evalstr.charAt(evalstr.length-1)),NaN)){
                console.log(evalstr.charAt(evalstr.length-1));
                alert("请不要进行错误输入");
                evalstr = "";
            }else{
                evalstr = new String(eval(evalstr));
            }
        }else if((evalstr.length==0||evalstr.length==1)&&(tdList[i].innerText == "+"||tdList[i].innerText == "*"||tdList[i].innerText == "/")&&Object.is(Number(evalstr.charAt(0),NaN))){
            
        }else if((evalstr.length==0&&Object.is(Number(tdList[i].innerText),NaN))||(evalstr.length!=0&&Object.is(Number(evalstr.charAt(evalstr.length-1)),NaN)&&Object.is(Number(tdList[i].innerText),NaN))){
            evalstr = evalstr.substring(0,evalstr.length-1) +tdList[i].innerText;
        }else{
            evalstr += tdList[i].innerText;
        }
        if(evalstr == "Infinity"){
            alert("请不要进行错误输入");
            evalstr = "";
        }
        input.value = evalstr;
    });
};

效果图:

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔冠宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值