Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.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
多个if语句,然后是else Javascript_Javascript_Html_Forms_If Statement_Trigonometry - Fatal编程技术网

多个if语句,然后是else Javascript

多个if语句,然后是else Javascript,javascript,html,forms,if-statement,trigonometry,Javascript,Html,Forms,If Statement,Trigonometry,我正在尝试用javascript为反三角函数(反正弦、反正余弦、反正切)创建一个计算器,这样每个输入都有复选框,所以window.alert不会返回NULL(用户友好)。 表格: <form name="inverse"> <legend>Legend is here.</legend> <input type="checkbox" name="inverse-cb1" value="sine"></input

我正在尝试用javascript为反三角函数(反正弦、反正余弦、反正切)创建一个计算器,这样每个输入都有复选框,所以window.alert不会返回NULL(用户友好)。 表格:

<form name="inverse">
        <legend>Legend is here.</legend>
        <input type="checkbox" name="inverse-cb1" value="sine"></input><label> sin<sup>-1</sup> ( </label><input type="text" size=5 name="sin"><label> )</label><br>
        <input type="checkbox" name="inverse-cb2" value="cosine"></input><label> cos<sup>-1</sup> ( </label><input type="text" size=5 name="cos"><label> )</label><br>
        <input type="checkbox" name="inverse-cb3" value="tangent"></input><label> tan<sup>-1</sup> ( </label><input type="text" size=5 name="tan"><label> )</label><br>
        <br><input type="button" onclick="trigI()" value="Calculate">
    </form>
}


问题是:多个if语句不起作用,因此函数永远不会返回。如何检查输入的条件并以正确的方式做出响应?

我无法告诉您如何使其“工作”,因为您想要的结果非常不清楚,但当我从头到脚浏览时,代码中的一些问题突然向我袭来。有些仍将运行,但会给出您不期望的结果,但至少有一个问题会导致错误并停止函数运行。因此:

大多数注释要么是多余的,可以删除,要么是多余的,如果变量名更具描述性,可以删除

声明

if (isNaN(document.inverse.sin.value) == true || ...)
可以简化,因为您已经声明了一个变量
sin
,该变量等于
document.inverse.sin.value
,并且
==true
部分是多余的。就说

if (isNan(sin) || isNan(cos) || isNan(tan)) {
所有“重置”语句,如
var sin=null
既错误又没有意义,因为(a)使用
var
意味着您试图重新声明变量(我认为JS只是忽略了这一点),所以您应该说
sin=nulltrigI()
函数中的局部变量,因此当函数返回时,它们都将消失。如果您试图清除屏幕上的字段,则需要说
document.inverse.sin.value=“”,但您不想因为其中一个字段无效而清除所有字段,从而惹恼用户。告诉他们哪个字段有问题,将焦点放在该字段上,让他们自己纠正

大多数
if
语句都测试如下内容:

if (document.inverse-cb1.checked == 'false'){
这将永远不会为真,因为您正在将布尔值等于
true
false
.checked
属性与字符串
'false'
进行比较。你需要说

if (document.inverse-cb1.checked == false){    // note: no quotes
// OR, even better
if (!document.inverse-cb1.checked){
sup.sup()
应该做什么
sup
是一个变量,已设置为
-1
sup()
是一个不存在的函数,在任何情况下都不应该尝试将其作为数字方法调用首先修复此问题,因为我认为这就是停止函数返回的原因

编辑:我注意到另一个大问题:

document.inverse.inverse-cb1.checked
对于不遵循JS标识符命名规则的属性,不能使用“点”对象表示法,并且JS标识符中不能有“-”。因此,尽管“inverse-cb1”是一个有效的属性名称,但您必须使用数组样式括号
[]
语法来访问它:

document.inverse["inverse-cb1"].checked

或者您可以从html和JS中删除“-”,问题是?我太累了,看不懂你们的心思……在上面加了一个问题@bottomYes,这是一些代码。我喜欢你的风格。很好地利用负空间,重复和对齐“重置”一词在美学上是令人愉悦的。我肯定会把这个挂在冰箱上,这还不是问题。“它不起作用,我怎样才能使它起作用”是非问题之王。谢谢!我照你说的做了,意识到我又犯了一个错误,但仍然不起作用。编辑的代码在主要问题的上方。请参阅我的编辑。可能还有其他问题,但我刚才添加的问题肯定会停止工作。它现在可以工作,但当我在一个字段上输入时,它会显示不适用于输入内容的值(我将尝试附加图片)。我应该在if语句2-8中使用
else if(/*条件*/)
而不是
if(/*条件*/)
?再次感谢!无法附加pic(@nnnnnn)如果您的代码在每个
if
中都有
返回值,则没有必要使用
else if
而不是
if
document.inverse["inverse-cb1"].checked