른록노트

[Javascript] querySelectorAll을 배열로 만들기 본문

Programming/[Javascript]

[Javascript] querySelectorAll을 배열로 만들기

른록 2022. 3. 29. 20:55

문제상황

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form name="form1" method="post" action="https://naver.com">
    <input type="text" name="p_name2" id="p_name2" value="test2">
    <input type="text" name="p_name1" id="p_name1" value="test1">
</form>

</body>
<script>                   
    console.log(document.querySelectorAll("[id^='p_name']"));
</script>


</html>
결과 => NodeList(2) [input#p_name2, input#p_name1]

위 처럼 querySelectorAll 메서드에 의해 반환되는 값은 NodeList 인데 (NodeList란?)
NodeList에 배열 함수를 사용할 수 없기 때문에 배열로 변환해 주고자 한다.

해결방법

    console.log(document.querySelectorAll("[id^='p_name']")); // NodeList 반환 (기존)

    //아래는 변환하는 코드
    console.log(Array.prototype.slice.call(document.querySelectorAll("[id^='p_name']"))); // mozilla 추천 방법 (구버전 브라우저 지원)
    console.log(Array.from(document.querySelectorAll("[id^='p_name']"))); // 블로그 소개 방법
    console.log([...document.querySelectorAll("[id^='p_name']")]); // 블로그 소개 방법
결과 =>
NodeList(2) [input#p_name2, input#p_name1]

[input#p_name2, input#p_name1]
[input#p_name2, input#p_name1]
[input#p_name2, input#p_name1]

참고사이트

https://gracefullight.dev/2019/03/30/querySelectorAll-%EB%A1%9C-%EB%B0%B0%EC%97%B4%EB%A7%8C%EB%93%A4%EA%B8%B0/
https://developer.mozilla.org/ko/docs/Web/API/NodeList

반응형
Comments