Я новичок в javascript, мне нужен совет.
1) У меня есть форма типа массива для отправки в PHP
<form name=\"assessment\" method=\"post\">";
while($k = mysql_fetch_array($sql1))
{
$i++;
$name = $k['name'];
$id = $k['student_id'];
print "\t<td align='center'><br>$i<br><br></td>\n";
print "\t<td align='center' class=\"H1\">
<font size=3><b>$name</b></font>
print "\t<td align='center'>
<select style=background:yellow name=result[$i]>
<option value=\"\" selected> </option>
<option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
</td>\n";
......
}
<input type=\"submit\" value=\"Submit\" onClick=\"return validate4()\">
2) я вызвал javascript для проверки формы перед регистрацией в БД
<script language = "JavaScript">
function validate4()
{
var Input = document.assessment.getElementsByName("result[]");
for (i=0; i<Input.length; i++)
{
if (assessment.Input[i].value == "")
{
alert('You have not entered all student attendance, pls check again!');
return false;
}
}
.....
}
</script>
3) кажется, что длина массива дает = 0 и не работает, какие-либо предложения? Заранее спасибо.
«У меня есть форма типа массива отправки в PHP» - это действительно не имеет значения. У вас проблемы с чтением DOM с помощью JavaScript. Вы должны показать минимальный воспроизводимый пример с образцом HTML, сгенерированным PHP, а не с исходным кодом PHP.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы пытаетесь получить Elements с помощью 'name=result[]', однако ваша форма использует name=result[$i], вы должны искать 'name=result[0]' 1 , 2 ... в своем javascript, вы можете использовать цикл вместо статического поиска
массив result [] является динамическим, а не статическим в зависимости от ввода данных while ($ k = mysql_fetch_array ($ sql1)). Мне нужно иметь возможность подсчитать общие результаты [$ i], созданные, чтобы сделать цикл в java. любой учил?
Тогда используйте другой селектор, вы можете получить все теги select.
наконец-то я нашел решение: 1) я удалил $ i => result [$ i]
<form name=\"assessment\" method=\"post\">";
while($k = mysql_fetch_array($sql1))
{
$i++;
$name = $k['name'];
$id = $k['student_id'];
print "\t<td align='center'><br>$i<br><br></td>\n";
print "\t<td align='center' class=\"H1\">
<font size=3><b>$name</b></font>
print "\t<td align='center'>
<select style=background:yellow name=result[$i]>
2) в валидации: Я перехожу на это,
функция validate4 () {
var k1=document.getElementsByName("result[]");
var y1=k1.length;
console.info(y1);
for(var x=0;x<y1;x++)
{
if (k1[x].value==0||k1[x].value= = "")
{
alert("atudent attendance not completed, pls check again!");
return false;
}
}
теперь он работает нормально! Спасибо
не могли бы вы немного пояснить свои сомнения. Поэтому мы можем предложить наши комментарии