select elementoption or optgroup elements.autofocusdisabledformmultiplenamerequiredsizeinterface HTMLSelectElement : HTMLElement {
           attribute boolean autofocus;
           attribute boolean disabled;
  readonly attribute HTMLFormElement? form;
           attribute boolean multiple;
           attribute DOMString name;
           attribute boolean required;
           attribute unsigned long size;
  readonly attribute DOMString type;
  readonly attribute HTMLOptionsCollection options;
           attribute unsigned long length;
  getter Element item(unsigned long index);
  object namedItem(DOMString name);
  void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
  void remove(long index);
  setter creator void (unsigned long index, HTMLOptionElement? option);
  readonly attribute HTMLCollection selectedOptions;
           attribute long selectedIndex;
           attribute DOMString value;
  readonly attribute boolean willValidate;
  readonly attribute ValidityState validity;
  readonly attribute DOMString validationMessage;
  boolean checkValidity();
  void setCustomValidity(DOMString error);
  readonly attribute NodeList labels;
};
   The select element represents a control for
  selecting amongst a set of options.
The multiple
  attribute is a boolean attribute. If the attribute is
  present, then the select element
  represents a control for selecting zero or more options
  from the list of
  options. If the attribute is absent, then the
  select element represents a control for
  selecting a single option from the list of options.
The size
  attribute gives the number of options to show to the user. The size attribute, if specified, must
  have a value that is a valid non-negative integer
  greater than zero.
The display size of a
  select element is the result of applying the
  rules for parsing non-negative integers to the value of
  element's size attribute, if
  it has one and parsing it is successful. If applying those rules to
  the attribute's value is not successful, or if the size attribute is absent, then the
  element's display size is 4
  if the element's multiple
  content attribute is present, and 1 otherwise.
The list of options
  for a select element consists of all the
  option element children of the select
  element, and all the option element children of all the
  optgroup element children of the select
  element, in tree order.
The required
  attribute is a boolean attribute. When specified, the
  user will be required to select a value before submitting the
  form.
If a select element has a required attribute specified,
  does not have a multiple
  attribute specified, and has a display size of 1;
  and if the value of the
  first option element in the select
  element's list of
  options (if any) is the empty string, and that
  option element's parent node is the select
  element (and not an optgroup element), then that
  option is the select element's
  placeholder label option.
If a select element has a required attribute specified,
  does not have a multiple
  attribute specified, and has a display size of 1,
  then the select element must have a placeholder
  label option.
Constraint validation: If the element has its
  required attribute
  specified, and either none of the option elements in
  the select element's list of options have their
  selectedness set to
  true, or the only option element in the
  select element's list of options with its
  selectedness set to
  true is the placeholder label option, then the element
  is suffering from being missing.
If the multiple
  attribute is absent, and the element is not disabled, then the user agent
  should allow the user to pick an option element in its
  list of options that
  is itself not disabled.
  Upon this option element being picked (either through a click, or
  through unfocusing the element after changing its value, or through
  a menu command, or through any
  other mechanism), and before the relevant user interaction event
   is queued (e.g. before the
  click event), the user agent must
  set the selectedness of the
  picked option element to true and then queue a
  task to fire a simple event that bubbles named
  change at the select
  element, using the user interaction task source as the
  task source.
If the multiple
  attribute is absent, whenever an option element in the
  select element's list of options has its
  selectedness set to
  true, and whenever an option element with its selectedness set to true
  is added to the select element's list of options, the user
  agent must set the selectedness of all the
  other option element in its list of options to
  false.
If the multiple
  attribute is absent and the element's display size is greater than 1,
  then the user agent should also allow the user to request that the
  option whose selectedness is true, if
  any, be unselected. Upon this request being conveyed to the user
  agent, and before the relevant user interaction event  is queued (e.g. before the click event), the user agent must set the
  selectedness of
  that option element to false and then queue a
  task to fire a simple event that bubbles named
  change at the select
  element, using the user interaction task source as the
  task source.
If the multiple
  attribute is absent and the element's display size is 1, then whenever
  there are no option elements in the select
  element's list of
  options that have their selectedness set to true,
  the user agent must set the selectedness of the first
  option element in the list of options in
  tree order that is not disabled, if any, to
  true.
If the multiple
  attribute is present, and the element is not disabled, then the user agent
  should allow the user to toggle the selectedness of the
  option elements in its list of options that are
  themselves not disabled
  (either through a click, or through a menu command, or any other mechanism).
  Upon the selectedness of one or
  more option elements being changed by the user, and
  before the relevant user interaction event  is queued (e.g. before a related click event), the user agent must
  queue a task to fire a simple event that
  bubbles named change at the
  select element, using the user interaction task
  source as the task source.
The reset
  algorithm for select elements is to go through
  all the option elements in the element's list of options, and set
  their selectedness
  to true if the option element has a selected attribute, and false
  otherwise.
The form attribute is used to
  explicitly associate the select element with its
  form owner. The name
  attribute represents the element's name. The disabled attribute is used to make
  the control non-interactive and to prevent its value from being
  submitted. The autofocus
  attribute controls focus.
typeReturns "select-multiple" if the element
    has a multiple
    attribute, and "select-one"
    otherwise.
optionsReturns an HTMLOptionsCollection of the list of options.
length [ = value ]Returns the number of elements in the list of options.
When set to a smaller number, truncates the number of option elements in the select.
When set to a greater number, adds new blank option elements to the select.
item(index)Returns the item with index index from the list of options. The items are sorted in tree order.
namedItem(name)Returns the item with ID or name name from the list of options.
If there are multiple matching items, then a NodeList object containing all those elements is returned.
Returns null if no element with that ID could be found.
add(element [, before ])Inserts element before the node given by before.
The before argument can be a number, in which case element is inserted before the item with that number, or an element from the list of options, in which case element is inserted before that element.
If before is omitted, null, or a number out of range, then element will be added at the end of the list.
This method will throw a HierarchyRequestError
    exception if element is an ancestor of the
    element into which it is to be inserted.
selectedOptionsReturns an HTMLCollection of the list of options that are
    selected.
selectedIndex [ = value ]Returns the index of the first selected item, if any, or −1 if there is no selected item.
Can be set, to change the selection.
value [ = value ]Returns the value of the first selected item, if any, or the empty string if there is no selected item.
Can be set, to change the selection.
The type IDL
  attribute, on getting, must return the string "select-one" if the multiple attribute is absent,
  and the string "select-multiple" if the multiple attribute is
  present.
The options
  IDL attribute must return an HTMLOptionsCollection
  rooted at the select node, whose filter matches the
  elements in the list of
  options.
The options collection is
  also mirrored on the HTMLSelectElement object. The
  supported property indices at any instant are the
  indices supported by the object returned by the options attribute at that
  instant.
The length IDL
  attribute must return the number of nodes represented by the options collection. On setting, it
  must act like the attribute of the same name on the options collection.
The item(index) method must return the value
  returned by the method of the same name on the options collection, when invoked
  with the same argument.
The namedItem(name) method must return the value
  returned by the method of the same name on the options collection, when invoked
  with the same argument.
When the user agent is to set the value of a new indexed
  property for a given property index index
  to a new value value, it must instead set the value of a new
  indexed property with the given property index index to the new value value on the
  options collection.
Similarly, the add() and remove() methods must
  act like their namesake methods on that same options collection.
The selectedOptions
  IDL attribute must return an HTMLCollection rooted at
  the select node, whose filter matches the elements in
  the list of options
  that have their selectedness set to
  true.
The selectedIndex
  IDL attribute, on getting, must return the index of the first
  option element in the list of options in
  tree order that has its selectedness set to true,
  if any. If there isn't one, then it must return −1.
On setting, the selectedIndex attribute must
  set the selectedness of all the
  option elements in the list of options to false,
  and then the option element in the list of options whose
  index is the given new
  value, if any, must have its selectedness set to
  true.
The value IDL
  attribute, on getting, must return the value of the first
  option element in the list of options in
  tree order that has its selectedness set to true,
  if any. If there isn't one, then it must return the empty
  string.
On setting, the value
  attribute must set the selectedness of all the
  option elements in the list of options to false,
  and then the first option element in the list of options, in
  tree order, whose value is equal to the given new
  value, if any, must have its selectedness set to
  true.
The multiple,
  required, and
  size IDL attributes
  must reflect the respective content attributes of the
  same name. The size IDL
  attribute has a default value of zero.
For historical reasons, the default value of the
  size IDL attribute does not
  return the actual size used, which, in the absence of the size content attribute, is either 1
  or 4 depending on the presence of the multiple attribute.
The willValidate, validity, and validationMessage IDL
  attributes, and the checkValidity() and setCustomValidity()
  methods, are part of the constraint validation API. The
  labels IDL attribute provides a
  list of the element's labels. The autofocus, disabled, form, and name IDL attributes are part of the
  element's forms API.
The following example shows how a select element
   can be used to offer the user with a set of options from which the
   user can select a single option. The default option is
   preselected.
<p> <label for="unittype">Select unit type:</label> <select id="unittype" name="unittype"> <option value="1"> Miner </option> <option value="2"> Puffer </option> <option value="3" selected> Snipey </option> <option value="4"> Max </option> <option value="5"> Firebot </option> </select> </p>
When there is no default option, a placeholder can be used instead:
<select name="unittype" required> <option value=""> Select unit type </option> <option value="1"> Miner </option> <option value="2"> Puffer </option> <option value="3"> Snipey </option> <option value="4"> Max </option> <option value="5"> Firebot </option> </select>
Here, the user is offered a set of options from which he can select any number. By default, all five options are selected.
<p> <label for="allowedunits">Select unit types to enable on this map:</label> <select id="allowedunits" name="allowedunits" multiple> <option value="1" selected> Miner </option> <option value="2" selected> Puffer </option> <option value="3" selected> Snipey </option> <option value="4" selected> Max </option> <option value="5" selected> Firebot </option> </select> </p>
Sometimes, a user has to select one or more items. This example shows such an interface.
<p>Select the songs from that you would like on your Act II Mix Tape:</p> <select multiple required name="act2"> <option value="s1">It Sucks to Be Me (Reprise) <option value="s2">There is Life Outside Your Apartment <option value="s3">The More You Ruv Someone <option value="s4">Schadenfreude <option value="s5">I Wish I Could Go Back to College <option value="s6">The Money Song <option value="s7">School for Monsters <option value="s8">The Money Song (Reprise) <option value="s9">There's a Fine, Fine Line (Reprise) <option value="s10">What Do You Do With a B.A. in English? (Reprise) <option value="s11">For Now </select>