Длина формы массива не работает

Я новичок в 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 и не работает, какие-либо предложения? Заранее спасибо.

не могли бы вы немного пояснить свои сомнения. Поэтому мы можем предложить наши комментарии

Muthusamy 23.04.2018 11:29

«У меня есть форма типа массива отправки в PHP» - это действительно не имеет значения. У вас проблемы с чтением DOM с помощью JavaScript. Вы должны показать минимальный воспроизводимый пример с образцом HTML, сгенерированным PHP, а не с исходным кодом PHP.

Quentin 23.04.2018 12:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
78
2

Ответы 2

Вы пытаетесь получить Elements с помощью 'name=result[]', однако ваша форма использует name=result[$i], вы должны искать 'name=result[0]' 1 , 2 ... в своем javascript, вы можете использовать цикл вместо статического поиска

массив result [] является динамическим, а не статическим в зависимости от ввода данных while ($ k = mysql_fetch_array ($ sql1)). Мне нужно иметь возможность подсчитать общие результаты [$ i], созданные, чтобы сделать цикл в java. любой учил?

Atfal Kids 23.04.2018 15:09

Тогда используйте другой селектор, вы можете получить все теги select.

Fabien Greard 23.04.2018 15:19

наконец-то я нашел решение: 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;
        }
    }

теперь он работает нормально! Спасибо

Другие вопросы по теме