我在html中有一个可以使用javascript的计算器 用户在一个输入字段中输入其值,全部为十进制。但是对于错误,有时用户输入010而不是10和eval给出octa结果
样本1: 的eval(' 20 * 15 + 8 * 10&#39); 结果380(正确)
样本2: 的eval(' 20 * 15 + 8 * 010&#39); 结果364(错误)
我还能使用其他方法吗? 或者如何在使用eval之前将所有值转换为十进制?
这是我的代码:
function recalcula()
{
var doc=document.forma;
try
{
s_1=0;
for(i=1;i<=9;i++)
{
CorrigeCampo(eval('doc.a1_'+i),0);
abc=eval('doc.a1_'+i+'.value.replace(/,/g,"")');
x_1=parseFloat(eval(abc));
//x_1=parseFloat(eval(abc.replace(/\b0(\d+)\b/g, '$1')));
if((isNaN(x_1))||(x_1==0))
{
x_1=0;
eval('doc.a20_'+i+'.value="";');
eval('doc.a1_'+i+'.value="";');
}
else
eval('doc.a20_'+i+'.value=x_1.toFixed(4);');
s_1+=x_1;
}
doc.Suma_1.value=s_1.toFixed(4);
}
catch(e)
{}
}
function CorrigeCampo(campo,def)
{
cadenanueva="";
valorcampo=campo.value;
carpermitidos="0123456789.*/-+";
for(j=0;j<valorcampo.length;j++)
{
act=valorcampo.substring(j,j+1);
if(carpermitidos.indexOf(act)>=0)
{
cadenanueva+=act;
}
}
if(cadenanueva=="")
cadenanueva=def;
campo.value=cadenanueva;
}
答案 0 :(得分:0)
你可以: