2015-05-09 27 views
8

Mam następujące HTML:HTML elementem legendy nie są liczone w formie

<!DOCTYPE html> 
<html> 
    <head> 
    <title>JavaScript &amp; jQuery - Chapter 13: Form Enhancement and Validation - Select All Checkboxes</title> 
    <link rel="stylesheet" href="css/c13.css" /> 
    </head> 
    <body> 
    <div class="container login"> 
     <form id="interests" action="/login" method="post"> 
     <div class="one-third column"> 
      <img src="img/logo.png" alt="logo" id="logo" /> 
     </div> 
     <div class="two-thirds column" id="main"> 
      <fieldset> 
      <legend>Genres</legend> 
      <label><input type="checkbox" value="all" id="all">All</label> 
      <label><input type="checkbox" name="genre" value="animation">Animation</label> 
      <label><input type="checkbox" name="genre" value="docs">Documentary</label> 
      <label><input type="checkbox" name="genre" value="shorts">Shorts</label> 
      </fieldset> 
     </div><!-- .two-thirds --> 
     </form> 
    </div><!-- .container --> 
    <script src="js/utilities.js"></script> 
    <script src="js/all-checkboxes.js"></script> 
</body> 

W pliku all-checkbox.js, mam następujące wiersze:

... 
var form = document.getElementById('interests'); 
var elements = form.elements; 
... 

Kiedy ładuję stronę i sprawdzam zmienną elementów w debugerze (Firefox), widzę, że jest to tablica o długości 5. Rozumiem, że form.elements zwróci wszystkie elementy formularza. Debugger pokazuje następujące wartości dla elementów:

0: <fieldset> 
1: <input#all> 
2: <input> 
3: <input> 
4: <input> 

Myślałem, że element legendy była również elementem formy, ale to oczywiście nie są liczone jako takie tutaj.

Czy ktoś może mnie oświecić?

+0

W przeciwieństwie do stron z forum, nie używamy "Dziękuję" lub "Każda pomoc doceniona" lub podpisów na [tak]. Zobacz sekcję "[Powinieneś" Cześć "," dziękuję ", slogany i pozdrowienia z postów?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -Naprawiono-z-postów) –

Odpowiedz

1

getElementById zwraca obiekt HTMLFormElement. legend nie jest właściwością listed element w jego właściwości.

Jeśli chodzi o , dlaczego .../wzruszenie ramion. Nie mogę znaleźć żadnej historii. Gdybym jednak musiał zgadywać, powiedziałbym, ponieważ nie jest to faktyczny element kontrolny formy, i być może moce-to-be czuć HTMLFORMElement.elements oznacza elementy "kontroli". Ale znowu, tylko spekulacje.

+1

Wydaje mi się, że udało ci się to, znalazłem to w Mozilla Developer Network: Właściwość HTMLFormElement.elements zwraca HTMLFormControlsCollection (HTML 4 HTMLCollection) wszystkich formantów formularza zawartych w elemencie FORM, z wyjątkiem elementów wejściowych, które mają atrybut typu obrazu. –