Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Я нуб, нужна помощь (https://javascript.ru/forum/misc/44544-ya-nub-nuzhna-pomoshh.html)

Kirill2018 23.01.2014 20:58

Я нуб, нужна помощь
 
Вот условие задачи:
Разработать страницу для автоматического подсчета успеваемости студента
В колонке «Оценка» должны находиться поля ввода. В строках
«СУММА» и «СРЕДНЯЯ ОЦЕНКА» должны находиться вычисляемые поля.
Их значения должны автоматически вычисляться при вводе любой оценки.
Ниже таблицы следует разместить сообщение об ошибке для случая, если
вместо оценки будет введено недопустимое значение, например, текст или
число вне диапазона от 2 до 5.
Вот часть скрипта
if (isNaN(el) || el == "" || (el < 2 || el > 5)) {
d.getElementById("error").innerHTML = "Оценка №"+(i+1)+" не является числом или не попадает в диапазон от 2 до 5!"; er = 1; break;
}
Объясните почему если ввожу значение входящие в этот диапазон выскакивает сообщение об ошибке.

рони 23.01.2014 21:46

Kirill2018,
как у вас el формируется?

Kirill2018 23.01.2014 22:52

Короче вот полный скрипт
<script language="javascript">  var d = document;
function summ() {
var len = d.getElementsByName("rating"), el, er = 0, sum = 0;d.getElementById("error").innerHTML = "";
d.getElementById("res").value = ""; d.getElementById("sr").value = "";
for (i = 0; i < len.length; i++) {
el = Number(len[i].value);
if (isNaN(el) || el == "" || (el < 2 || el > 5)) {
d.getElementById("error").innerHTML = "Оценка №"+(i+1)+" не является числом или не попадает в диапазон от 2 до 5!"; er = 1; break;
}
	        else {
	            sum += el;
}
}
if (er == 1) { return false; }
	    d.getElementById("res").value = sum;
	    d.getElementById("sr").value = Math.round(sum/len.length);
	} </script>

рони 23.01.2014 23:53

Kirill2018,
до кучи и html можно)))

Kirill2018 24.01.2014 00:38

Вот вообщем так выглядит исходный код этой страницы
 
<html>
<head>
<script language="javascript">
var d = document;
function summ() {
var len = d.getElementsByName("rating"), el, er = 0, sum = 0;d.getElementById("error").innerHTML = "";
d.getElementById("res").value = ""; d.getElementById("sr").value = "";
for (i = 0; i < len.length; i++) {
el = Number(len[i].value);
if (isNaN(el) || el == "" || (el < 2 || el > 5)) {
d.getElementById("error").innerHTML = "Оценка №"+(i+1)+" не является числом или не попадает в диапазон от 2 до 5!"; er = 1; break;
}
else {
sum += el;
}
}
if (er == 1) { return false; }
d.getElementById("res").value = sum;
d.getElementById("sr").value = Math.round(sum/len.length);
}
</script>
</head>
<body>
<h1 align="center">Анкета успеваемости студента</h1>
<form name="form1">
<table align="center" border="2px">
<tr><th>#</th><th>Дисциплина</th><th>Оценка</th></tr>
<tr><td>1</td><td>Математика</td><td><input type="text" size="10" maxlength="1" name="rating" onkeyup="summ()"></td></tr>
<tr><td>2</td><td>Информатика</td><td><input type="text" size="10" maxlength="1" name="rating" onkeyup="summ()"></td></tr>
<tr><td>3</td><td>Физика</td><td><input type="text" size="10" maxlength="1" name="rating" onkeyup="summ()"></td></tr>
<tr><td>4</td><td>История</td><td><input type="text" size="10" maxlength="1" name="rating" onkeyup="summ()"></td></tr>
<tr><td>5</td><td>Русский язык</td><td><input type="text" size="10" maxlength="1" name="rating" onkeyup="summ()"></td></tr>
<tr><td>6</td><td>Физкультура</td><td><input type="text" size="10" maxlength="1" name="rating" onkeyup="summ()"></td></tr>
<tr><td>&nbsp;</td><td>Сумма</td><td><input type="text" size="10" id="res"></td></tr>
<tr><td>&nbsp;</td><td>Средняя оценка</td><td><input type="text" size="10" id="sr"></td></tr>
</table><br>
<span id="error" style="color: red; width: 100%; text-align: center;"></span>
</form>
</body>
</html>

рони 24.01.2014 00:52

Kirill2018,
Всё нормально работает у вас только вы непредусмотрели что данные не во все ячейки сразу попадают

Kirill2018 24.01.2014 01:23

Ага понятно.Большое спасибо


Часовой пояс GMT +3, время: 07:54.