我为特许学校工作,我只是在学习javascript。我有一些代码是由以前填补我的职位的人编写的,在我看来,它应该可行,但事实并非如此。javascript中的五个值的平均值
这是我在自定义HTML网页在我的SIS:
GED Status: <script language="Javascript">gedCheck('~(ELC_tspp_GED_read_score)','~ (ELC_tspp_GED_wri_score)','~(ELC_tspp_math_GED_score)','~(ELC_science_state_exam_score)','~(soc_sci_state_exam_score)')</script>
,这似乎是从不同的数据库字段正确检索值,如JavaScript的程序评估每个值,以确保它的至少410但这是尽可能去......
这里的JavaScript代码例程:
function gedCheck(read,wri,math,sci,soc) {
if(read < 0 && read > 1000)
read = 0;
if(wri < 0 && wri > 1000)
wri = 0;
if(math < 0 && math > 1000)
math = 0;
if(sci < 0 && read > 1000)
read = 0;
if(soc < 0 && soc > 1000)
soc = 0;
if ((read >= 410) && (wri >= 410) && (math >= 410) && (sci >= 410) && (soc >= 410)) {
if(read+wri+math+sci+soc >= 2250)
document.write("PASSED")
}
else
document.write("NOT PASSED")
}
它应该被检查每一个在日比分e GED测试至少为410分,所有分数的总和应至少为2250.然而,它并没有达到最后一部分。如果所有分数超过410,它将返回“PASSED”。
我试过这个,但它也不起作用。
function gedCheck(read,wri,math,sci,soc) {
if(read < 0 && read > 1000)
read = 0;
if(wri < 0 && wri > 1000)
wri = 0;
if(math < 0 && math > 1000)
math = 0;
if(sci < 0 && read > 1000)
read = 0;
if(soc < 0 && soc > 1000)
soc = 0;
if ((read >= 410) && (wri >= 410) && (math >= 410) && (sci >= 410) && (soc >= 410)) {
if(read+wri+math+sci+soc/5 >= 450)
document.write("PASSED")
}
else
document.write("NOT PASSED")
}
会有人请帮助我工作了这一点,因此无论是均线全部5个号码,并返回“通过”只有当平均是450,或者干脆将所有5个号码,并返回“通过”只有当总和是2250或更大?
如果(读< 0 && read > 1000): 至于你说你只是学习,一个技巧是,这将永远,永远如此。你在这里问的是“在同一时间读小于0,但也超过1000,”? ||应该用来代替&&。 &&表示“如果这和这个”,||意思是“如果这个,还是这个”。 ||在你的情况下,将其改为“如果读数小于零,或者它大于1000,则执行此操作”,这是可能的,因为数学中的数字既不小于零也不超过1000. 注意:是shift + \键,并且被称为“管道” – Gyhth 2013-02-19 19:28:50
我认为这就是他为什么这么做的原因 - 也许他只是想确保每个值都设置为0以开始使用?或者一个人从不这样做? – DataBased 2013-02-19 19:36:20
在那里,它永远不会将它设置为零,因为这是后面的代码,因为它永远不会小于0并且大于1000,它永远不会将它设置为0.它是合理的如果满足这两个条件中的任何一个(0最小值,我认为最大值为1000分),那么他希望将其设为零,但这就是为什么您要使用OR(||)运算符而不是AND(&&)。 if之后的代码,如read = 0,仅在if块返回true时执行。阅读< 0 && Read > 1000将永远不会返回true,因此,它永远不会将读取设置为0.与其他值相同。 – Gyhth 2013-02-19 19:39:52