Source: http://www.iro.umontreal.ca/~dift1142/pages/notesDeCours/2_JS_form_DOM.pdf