我想使用jQuery创建一个计算器,它不允许用户在彼此之后输入两个操作,如 - 或++或**或//我希望计算器将值重置为"& #34; < - 空,同时我也不想让用户先输入操作,所以操作前必须有一个数字。
这是我的代码请帮帮我
注意:我是初学者,请原谅我这个原始问题。
<html>
<head>
<script>
var expr="";
function keypressed(pressedKey){
expr+=pressedKey;
document.getElementById("output").value = expr;
}
function printresult(){
var res = eval(expr);
expr +="=";
expr +=res;
document.getElementById("output").value = expr;
}
</script>
</head>
<body>
<table border="1">
<form>
<tr>
<td colspan="4" align="center">
<input type="text" id="output" size="15">
</td>
</tr>
<tr>
<td><input type="button" value="1" onclick='keypressed("1");
'></td>
<td><input type="button" value="2" onclick='keypressed("2");
'></td>
<td><input type="button" value="3" onclick='keypressed("3");
'></td>
<td><input type="reset" value="C" onclick='expr="";
'></td>
</tr>
<tr>
<td><input type="button" value="4" onclick='keypressed("4");
'></td>
<td><input type="button" value="5" onclick='keypressed("5");
'></td>
<td><input type="button" value="6" onclick='keypressed("6");
'></td>
<td><input type="button" value="*" onclick='keypressed("*");
'></td>
</tr>
<tr>
<td><input type="button" value="7" onclick='keypressed("7");
'></td>
<td><input type="button" value="8" onclick='keypressed("8");
'></td>
<td><input type="button" value="9" onclick='keypressed("9");
'></td>
<td><input type="button" value="-" onclick='keypressed("-");
'></td>
</tr>
<tr>
<td><input type="button" value="." onclick='keypressed(".");
'></td>
<td><input type="button" value="0" onclick='keypressed("0");
'></td>
<td><input type="button" value="/" onclick='keypressed("/");
'></td>
<td><input type="button" value="+" onclick='keypressed("+");
'></td>
</tr>
<tr>
<td colspan="4" align="center">
<input type="button" value=" = " onclick='printresult();'>
</td>
</tr>
</form>
</table>
</body>
</html>
答案 0 :(得分:0)
我做了一点小提琴,也许它有所帮助:https://jsfiddle.net/y21ghazh/
我添加了两个新功能:
function isNumeric(n) {
var matches = n.match(/\d+/g);
if (matches != null) {
return true;
}
return false; //No number
}
function checkDuplicateOperator(expr, nextChar)
{
if(expr.length <= 0)
return true;
//Check if the last char of the expression is a non numeric(+,-,/ etc..) value AND
//If the next char is a non numeric value => This would result in ++ or +- or +/ ... abort!
if(!isNumeric(expr[expr.length-1]) && !isNumeric(nextChar))
return false;
return true;
}
第一个检查数字字符是否在字符串中。需要检查第一个字符是否为数字,并检查表达式的最后一个字符是否为数字。
第二个函数检查最后一个charcater是否为+ - / *之类的运算符。 如果是这样,它返回false而没有
让我解释一下: 你的第一个角色必须是一个数字,你不需要双重运算符: 所以你必须丢弃keypressed()函数中的键:
伪代码:
//expr is empty and first char is NOT NUMERIC => ABORT!
if(expr.length == 0 AND pressedKey != NUMERIC)
return; //Abort
else
{
//pressed key is an operator and the last char of expr is an operator? ==> ABORT!
if(pressedKey is OPERATOR AND expr.LastKey is OPERATOR)
return; //Abort
else
{
expr += pressedKey;
}
}