[JS] elements.length nie zlicza elementów

0

Mam taki formularz:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Rejestracja</title>
        <script type="text/javascript">

        </script>
        <script type="text/javascript" src="js/scripts.js"></script>
        <link rel="stylesheet" type="text/css" href="css/layout.css" />
    </head>
    <body>

     <form id="rejestracja" action="zarejestruj.php" method="POST">

Jakieś pole:<input type="text" name="jakies_pole" value="" />
Test 0:<input type="text" name="test_0" value="" />
Test 1:<input type="text" name="test_1" value="" />

            <input type="button" value="Dodaj kolejnego uczestnika" onClick="dodaj_uczestnika()" />
            
                
              <input type="button" value="Zlicz" onClick="zlicz()" />
           
        </form>

    </body>
</html>

oraz kod JS:

function zlicz()
{
  var licznik = 0;
  var form=document.getElementById('rejestracja');
  var inputs=form.getElementsByTagName('input');
  var ile=inputs.length; 
  //var ilosc_elementow = document.forms['rejestracja'].elements.length; 
  alert("ilosc elementów:"+ile);

  for (var i = 0; i < ile; i++ )
    {
       if (inputs[i].name == "test_"+i)
        {
          licznik += 1;
        }
       
    } 
alert("licznik="+licznik);  

}

Problem polega na tym, że skrypt w ogóle nie zlicza pól o nazwie "test_0" oraz "test_1" w pętli.
Gdy podam nazwy na sztywno (bez użycia zmiennej "i"), to wtedy jest dobrze. Zauważyłem również, że jak usunę pierwsze pole "jakieś_pole", to jest OK. Czy ktoś potrafi powiedzieć czemu tak się dzieje i jak to poprawić?

0

Bo masz założenie, że i-tym elementem będzie ten o id test_i

0

Rzeczywiście, dziękuję za naprowadzenie.
W takim razie wyjaśnię, co chciałem osiągnąć.
Pola "test_i" są dodawane dynamicznie, więc nie znam ich ilości. Potrzebuję zsumować wartości, które znajdują się w wyżej wymienionych polach.

0

Już poradziłem sobie w inny sposób.
Zamiast:

if (inputs[i].name == "test_"+i)

napisałem warunek:

 if (inputs[i].name.indexOf('test_')>=0)

1 użytkowników online, w tym zalogowanych: 0, gości: 1