form elements

lee jae hwan·2022년 8월 13일

브라우저

목록 보기
31/39

html 내부에는 여러개의 form들이 있을 수 있기 때문에 document.forms 로 제공된다.

let f:HTMLCollectionOf<HTMLFormElement> = document.forms;

HTMLCollection 요소는 length, item(number index), namedItem(name or id)메소드를 제공한다.

form요소노드는 더이상 name속성을 사용하지 않고 id속성을 사용한다.

내부 form controll들은 name/value 쌍으로 submit되기때문에 form은 name속성을 가질 필요가 없다.

formElement는 elements라는 특별한 프로퍼티를 제공하는데 formElement.elements는 < form >내부 모든 컨트롤 요소들을 나열하는 HTMLFormControlsCollection을 반환한다.

예로 formElement.inputElement 이렇게 단축형으로 접근해도 되지만 let formControlls = document.forms[0].elements;로 할당후 formControlls.inputElement로 접근하는 것이 표준에 가깝다.

<body>
  <form name="my">
    <fieldset name="userFields">
      <legend>info</legend>
      <select id="genres">
        <option value="rock">Rock</option>
        <option value="blues" selected>Blues</option>
      </select>
    </fieldset>
  </form>
</body>
let f:HTMLCollectionOf<HTMLFormElement> = document.forms;
let formControlls:HTMLFormControlsCollection = f.nameItem('my').elements;


form id에는 콜론 :과 점. 을 사용할 수 있다. (form에 name속성을 사용하지 않는다)

<form id="form:login">
</form>
<form id="form.register">
</form>

console.log( document.forms.namedItem('form:login'));
document.forms[0].elements.genres; // 표준형
document.forms[0].genres; // 단축형

표준형과 단축형의 차이

<form id="form">
  <input name="login">
</form>

<script>
  alert(form.elements.login == form.login); // true, 동일한 <input>입니다.

  form.login.name = "username"; //  input의 name 속성을 변경합니다.
  alert(form.elements.login); // undefined  
  alert(form.elements.username); // input

  console.log(form.login.value); //  여전히 접근이 가능하다.???????
</script>

element.form으로 역참조

<form id="form">
  <input type="text" name="login">
</form>

<script>
  let login = form.login;
  alert(login.form); // HTMLFormElement
</script>


select와 option

< select > 요소에는 세 가지 중요 프로퍼티가 있다.

  1. select.options – < option > 하위 요소를 담고 있는 컬렉션

  2. select.value – 현재 선택된 < option > 값

  3. select.selectedIndex – 현재 선택된 < option >의 번호(인덱스)

< select >의 값을 설정하는 세 가지 방법

  1. 조건에 맞는 < option > 하위 요소를 찾아 option.selected속성을 true로 설정 ( 표준 )

  2. select.value를 원하는 값으로 설정

  3. select.selectedIndex를 원하는 option 번호로 설정

<select id="select">
  <option value="apple">Apple</option>
  <option value="pear">Pear</option>
  <option value="banana">Banana</option>
</select>

<script>
  select.options[2].selected = true;
  select.selectedIndex = 2;
  select.value = 'banana';
</script>

세 가지 코드의 실행 결과는 모두 같으나 첫번째 방법으로 설정하는 것이 좋다.


Option 생성자

option = new Option(text, value, defaultSelected, selected);

let sel:HTMLSelectElement = document.forms[0].elements.select;
sel.add(new Option('text', 'value'));

0개의 댓글