【发布时间】:2020-06-29 06:05:13
【问题描述】:
所以我正在写一个计算器,我在等号上苦苦挣扎,我正在尝试做一些简单的床(没有括号也没有指数),但我的代码一直返回 0,就好像 if 语句正在发生一样完全跳过
我不知道是什么原因造成的,因为我没有收到任何错误
function equal(){
let exp = document.form.textview.value;
let expArray = exp.split(/\b/);
console.log(expArray); //<-if something doesn't work check this
let total = 0;
var lastOperator = "+";
var lastDig = 0;
for(let i = 0 ; i < expArray.length; i++){
var dig = expArray[i].trim(); //value of "i", the item currently in the loop
if(isNaN(dig) == true){
console.log("string")
}
else if(isNaN(dig) == false){
console.log('not string');
if (dig == "/"){ //this whole section gets skipped :(
var a = i + 1;
var p = i - 1;
var aDig = parseFloat(expArray[a].trim); //value after "i"
var bDig = parseFloat(expArray[p].trim); // value before "i"
var sDig = aDig / bDig;
total = expArray.splice(bDig, 3, sDig);
}
else if ( dig == "*"){
var a = i + 1;
var p = i - 1;
var aDig = parseFloat(expArray[a].trim); //value after "i"
var bDig = parseFloat(expArray[p].trim) // value before "i"
var sDig = aDig * bDig;
total = expArray.splice(bDig, 3, sDig);
}
else if ( dig == "+"){
var a = i + 1;
var p = i - 1;
var aDig = parseFloat(expArray[a].trim); //value after "i"
var bDig = parseFloat(expArray[p].trim)// value before "i"
var sDig = aDig + bDig;
total = expArray.splice(bDig, 3, sDig);
console.log(expArray.splice(bDig, 3, sDig));
}
else if( dig == "-"){
var a = i + 1;
var p = i - 1;
var aDig = parseFloat(expArray[a].trim); //value after "i"
var bDig = parseFloat(expArray[p].trim) // value before "i"
var sDig = aDig - bDig;
total = expArray.splice(bDig, 3, sDig);
}
}
}
document.form.textview.value = total;
} ```
【问题讨论】:
-
not string文本是否出现在您的控制台中?如果是,请将dig变量登录到控制台并检查其中存储的内容。 -
isNaN()检查该值是否不是您正确记录的数字。然而,感觉好像你用错了,因为你确保它是一个数字,然后将它与字符串进行比较。您应该将子 if 移动到console.log("string")部分。
标签: javascript for-loop if-statement calculator calculation