Javascript 如果语句未被执行/到达
下面的JavaScript代码试图使用毕达哥拉斯定理计算与直角三角形相关的值。在执行计算之前,检测各种输入组合的部件有问题。这只是一系列的Javascript 如果语句未被执行/到达,javascript,math,if-statement,web,Javascript,Math,If Statement,Web,下面的JavaScript代码试图使用毕达哥拉斯定理计算与直角三角形相关的值。在执行计算之前,检测各种输入组合的部件有问题。这只是一系列的if语句,它们都非常相似,但最后一个不会执行 ,以防你们中的一些人想弄乱代码 以下是我遇到问题的函数: function drawNumbers() { if(cathetusAKnown) { cathetusA.value = cathetusANumber; } if(cathetusBKnown) {
if
语句,它们都非常相似,但最后一个不会执行
,以防你们中的一些人想弄乱代码
以下是我遇到问题的函数:
function drawNumbers() {
if(cathetusAKnown) {
cathetusA.value = cathetusANumber;
}
if(cathetusBKnown) {
cathetusB.value = cathetusBNumber;
}
if(hypotenuseKnown) {
hypotenuse.value = hypotenuseNumber;
}
if(angleAKnown) {
angleA.value = angleANumber;
}
if(angleBKnown) {
angleB.value = angleBNumber;
}
}
function calculate() {
updateNumbers();
//If CathetusA and B are known, calculate the rest
if(cathetusAKnown && cathetusBKnown) {
if(!hypotenuseKnown) {
calcHypotenuse();
}
if(!angleAKnown) {
calcAngleA();
}
if(!angleBKnown) {
calcAngleB();
}
}
//If CathetusA and the hypotenuse are known, calculate the rest
if(cathetusAKnown && hypotenuseKnown) {
if (!cathetusBKnown) {
calcCathetusB();
}
if(!angleAKnown) {
calcAngleA();
}
if(!angleBKnown) {
calcAngleB();
}
}
//If CathetusB and the hypotenuse are known, calculate the rest
if(cathetusBKnown && hypotenuseKnown) {
if (!cathetusAKnown) {
calcCathetusA();
}
if(!angleAKnown) {
calcAngleA();
}
if(!angleBKnown) {
calcAngleB();
}
}
drawNumbers();
}
最后一种情况(计算给定的cathetus B和斜边的cathetus A)是可以的,但公式是错误的
假设hyp²=a²+b²
你知道a=sqrt(hyp²-b²)
,相反你计算的是相反的(sqrt(b²-hyp²)
),这将导致NaN
,因为你将取一个负数的平方根
另一个错误也存在于其他类似情况中(它没有给出一个
NaN
,但是结果是错误的,因为你正在添加斜边的平方和天琴座的平方。也许倒数第二个会引发异常?你有什么错误吗?我试着在Chrome的JS控制台中查找,但据我所知,我没有任何错误。你怎么可能告诉我哪些字段是已知字段,哪些字段是未知字段,尤其是第二次点击“计算”时?这是一个很好的问题。老实说,我没有想到。我会立即修复。谢谢!我一定忽略了这一点!我真是个白痴,哈哈。你对“另一个类似案例”指什么?@Elias:计算cathetus B时,给定cathetus A和斜边。你用的是加法而不是减法(hyp-cat)。啊,我明白了。我做这个的时候一定很困。好吧,谢谢你的帮助!