Я работаю в чартерной школе, и я просто изучаю свой путь вокруг 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>
Это, кажется, извлечения значений из различных полей БД правильно, как яваскрипта рутина оценивает каждое значение для обеспечения его по крайней мере, 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. Однако она не доходит до последней части. Он возвращается «PASSED», если все баллы превышают 410.
Я пробовал это, но он также не работает.
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 или больше?
if (read < 0 && read > 1000): Как вы сказали, вы просто учитесь, подсказка заключается в том, что этого никогда не будет.То, что вы спрашиваете здесь, похоже на то, что «читается меньше 0, но также более 1000, в то же самое время?» || следует использовать вместо &&. && означает «Если это И это», || означает «Если это, или это». || в вашем случае меняет его: «Если чтение меньше нуля или оно больше 1000, сделайте это», что возможно, так как число в Math меньше нуля, но более 1000. Примечание: | это shift + \ key, и называется «Pipe». – Gyhth
Я думаю, именно поэтому он и сделал - может быть, он просто хотел убедиться, что каждое значение получило значение 0, чтобы начать? Или человек никогда этого не делает? – DataBased
В этом он никогда не установит его на ноль, поскольку это следующий код, и поскольку он никогда не будет меньше 0 и больше 1000, он никогда не установит его на 0. Имеет смысл, если он хотел сделать его равным нулю, если выполнено одно из этих условий (0 Минимум, 1000 баллов - макс, который я предполагаю), но именно поэтому вы должны использовать оператор OR (||), а не AND (&&). Код после if, например read = 0, выполняется только в том случае, если блок if возвращает true. Чтение < 0 && Read > 1000 никогда не вернет true, поэтому он никогда не установит чтение равным 0. То же самое с другими. – Gyhth