javascript - 我的 if 语句和 else if 语句没有被执行,但没有错误
问题描述
所以我正在写一个计算器,我在等号上苦苦挣扎,我正在尝试做一些简单的床(没有括号也没有指数),但我的代码一直返回 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;
} ```
解决方案
我不确定您到底想在这里做什么。isNan(numberContent) 将返回 false & isNan(stringContent) 将返回 true。你用错了。第一个 if 应该是isNaN(dig) == false
& 2nd isNaN(dig) == true
。
let exp = "1/1*3";
let expArray = exp.split(/\b/);
console.log(expArray); //if something doesn't work check this
var previousValue= parseFloat(expArray[0].trim().toString());
for(let i = 1 ; i < expArray.length; i++){
var dig = expArray[i].trim(); //value of "i", the item currently in the loop
if(isNaN(dig) == false){
console.log("string")
}
else if(isNaN(dig) == true){
console.log("not string");
var a = i + 1;
var aDig = previousValue
var bDig = parseFloat(expArray[a].trim().toString()); //value after "i"; // value before "i"
if (dig == "/"){ //this whole section gets skipped :(
var sDig = aDig / bDig;
}
else if ( dig == "*"){
var sDig = aDig * bDig;
}
else if ( dig == "+"){
var sDig = aDig + bDig;
}
else if( dig == "-"){
var sDig = aDig - bDig;
}
previousValue = sDig;
i++
}
}
alert(previousValue);
```
推荐阅读
- material-ui - UNO 材质 BottomNavigationBar 事件处理程序
- c# - 如何将创建的类或对象传递给 AssemblyInitialize?
- django - 在单个日期获得最高数量的订单
- ruby - 面临在 ruby 中创建一对一映射的问题
- python-3.x - Python Google Slides API - 调整表格的宽度和高度以适合页面内
- javascript - (bignumber.js)“decimalPlaces”或“dp”不起作用
- regex - 检测 Base64 编码的 Snort 规则
- r - 在 r 中分离和使用值
- python - Python WAND 无法更改文件名的增量
- c++ - 当其中一个是函数参数时,在编译时连接 const char