用javascript写计算器遇到的问题,求大神
下面是我写的JS,主要想实现的就是一个简单的计算器,能够进行除零和余零的判断,完成以后发现一些问题:
1.涉及到小数点的时候,只能输入例如0.9、0.78等数字,不能输入9.9、8.7等小数点之前有数的数字;
2.我想实现计算完成之后重新输入数字时,之前的结果被自动重置的效果,怎么实现?
3.怎么限制+、-等运算符连续输入?
<body>
<div id="main">
<label for="res"></label><input type="text" id="res" readonly/>
<div id="button1">
<button onclick="getNum(this)">1</button>
<button onclick="getNum(this)">2</button>
<button onclick="getNum(this)">3</button>
<button onclick="getNum(this)">+</button>
<button onclick="getNum(this)">4</button>
<button onclick="getNum(this)">5</button>
<button onclick="getNum(this)">6</button>
<button onclick="getNum(this)">-</button>
<button onclick="getNum(this)">7</button>
<button onclick="getNum(this)">8</button>
<button onclick="getNum(this)">9</button>
<button onclick="getNum(this)">*</button>
<button onclick="clearRes()">C</button>
<button onclick="getNum(this)">0</button>
<button onclick="getNum(this)">.</button>
<button onclick="getNum(this)">/</button>
<button onclick="getNum(this)">(</button>
<button onclick="getNum(this)">)</button>
<button onclick="getNum(this)">%</button>
<button onclick="getRes()">=</button>
</div>
</div>
</body>
<script>
var res = document.getElementById("res");
function getNum(obj){
res.value = res.value + obj.innerHTML;
//首位清零
if(!isNaN(res.value)){
res.value=eval(res.value);
}
}
//等于功能
function getRes(){
pdkh(res.value);
res.value = eval(res.value);
}
//清零功能
function clearRes(){
res.value="";
}
//判断括号
function pdkh(str) {
var a = str;
var b = str.lastIndexOf("\(");
//b最后一个左括号位置,加1防止第一个为位置0
if (b + 1) {
var c = a.slice(b);
var d = c.indexOf("\)");
var e = c.slice(0, d + 1); //e为括号及内部内容
// 判断除号
a = a.replace(e, pdch(e));
pdch(a);
b = a.lastIndexOf("\(");
} else {
pdch(a);
}
}
function pdch(khz) {
if (khz.match(/[\/%]/)) {
var wds = khz.match(/[\/%](\d+)+/);
if (wds[1] == 0) {
alert("除数或余数不能为零");
res.value = 0;
} else {
khz = khz.replace(wds[0], "");
pdch(khz);
}
} else {
return eval(khz);
}
}
</script>