Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-使用函数、子字符串和大小进行正确的输入验证?_Javascript_Html_Validation_Input_Calculator - Fatal编程技术网

JavaScript-使用函数、子字符串和大小进行正确的输入验证?

JavaScript-使用函数、子字符串和大小进行正确的输入验证?,javascript,html,validation,input,calculator,Javascript,Html,Validation,Input,Calculator,下面的程序是一个简单的加法和减法计算器,我一直在努力保持代码干净和简单,同时避免不好的做法 在validate()函数中,我使用布尔值来判断运算符是否重复 我正在寻找一种类似的方法,但更简单 要求: 没有重复的操作员输入 var i=-1;var j=-1; 函数ins(val){ i=-1; j=-1; document.getElementById(“txtField”).value+=val; 验证() } 函数plusIns(val){ j++ 如果(j==0){ var str=do

下面的程序是一个简单的加法和减法计算器,我一直在努力保持代码干净和简单,同时避免不好的做法

在validate()函数中,我使用布尔值来判断运算符是否重复

我正在寻找一种类似的方法,但更简单

要求:

没有重复的操作员输入

var i=-1;var j=-1;
函数ins(val){
i=-1;
j=-1;
document.getElementById(“txtField”).value+=val;
验证()
}
函数plusIns(val){
j++
如果(j==0){
var str=document.getElementById(“txtField”).value+=val;
}
验证()
}
函数子类(val){
我++
如果(i==0){
var str=document.getElementById(“txtField”).value+=val;
}
验证()
}
函数验证(){
让str=document.getElementById(“txtField”).value;
让size=document.getElementById(“txtField”).value.length-1
设n=str.includes(“-+”);
设m=str.includes(“+-”);
如果(n){
document.getElementById(“txtField”).value=str.substring(0,大小);
}
如果(m){
document.getElementById(“txtField”).value=str.substring(0,大小);
}
}
函数clr(){
document.getElementById(“txtField”)。值=“”
}
函数solve(){
设x=document.getElementById(“txtField”).value
设y=eval(x)
document.getElementById(“txtField”).value=y
}
正文{
背景色:白烟;
文本对齐:居中;
}

添加子计算器(&S)







您可以尝试此最佳做法
函数ins(val){
让str=document.getElementById(“txtField”).value;
让size=document.getElementById(“txtField”).value.length-1;
如果(val!='+'&&val!='-'){
document.getElementById(“txtField”).value+=val
}否则{
如果(尺寸>-1){
if(document.getElementById(“txtField”).value.charAt(大小)!='+'&document.getElementById(“txtField”).value.charAt(大小)!='-'){
document.getElementById(“txtField”).value+=val
}否则{
如果(val=='-'){
if(document.getElementById(“txtField”).value.charAt(size)=='+')){
document.getElementById(“txtField”).value=str.substring(0,size)+val
}
}否则{
if(document.getElementById(“txtField”).value.charAt(size)=='-'){
document.getElementById(“txtField”).value=str.substring(0,size)+val
}
}
}  
}
}
}
函数clr(){
document.getElementById(“txtField”).value=“”
}
函数solve(){
设x=document.getElementById(“txtField”).value
设y=eval(x)
document.getElementById(“txtField”).value=y
}
正文{
背景色:白烟;
文本对齐:居中;
}

按CJ添加和细分








感谢您的快速响应,但您能否指出您的代码与给定代码之间的主要差异?为什么这是良好的做法。谢谢与讨论中的代码片段相比,您的代码引入了更多的嵌套,因此我不认为它是最佳实践。另外,代码段中的问题对我来说更具可读性,我更喜欢这个。