getElementById와 getElementsByClassName 사용법에 대해 질문드립니다.

getElementById와 getElementsByClassName 사용법에 대해 질문드립니다.

QA

getElementById와 getElementsByClassName 사용법에 대해 질문드립니다.

본문

안녕하세요

항상 sir 고수님들의 많은 도움을 받고있는 회원입니다.

정말 감사드립니다.

다름이아니라 한 부분이 막혀 질문드리게되었는데요

getElementById와 getElementsByClassName 사용법에 대해 질문드립니다.

 

<script>
    function replace_id(){
    var txt = document.getElementById('area_replace_<?= $data["c_idx"] ?>').value;
    txt = txt.replace(/\n$/g, '');

    document.getElementById('area_replace_<?= $data["c__idx"] ?>').value = txt;
    }
</script>
이 스크립트는 공백을 제거해주는 스크립트인데요

getElementById로 짜여진 스크립트입니다.

아무 이상없이 잘 작동합니다.

 

                                     
<script>
    function replace_class(){
    var txt = document.getElementsByClassName('area_replace_<?= $data["c_idx"] ?>').value;
    txt = txt.replace(/\n$/g, '');

    document.getElementsByClassName('area_replace_<?= $data["c_idx"] ?>').value = txt;
    }
</script>

이 스크립트는 위와 동일한 기능을 하는 소스입니다.

getElementsByClassName로 class를 지정해주려는데

작동을 하지 않습니다.

 

혹시 getElementsByClassName로 바꾸는도중 잘못 사용한 부분이 있을까요?

고수님들의 많은 조언 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 3


<script>
// 공백 제거 아님. 어쨌거나 area_replace_고유번호 클래스명이 1개만 존재할 때…
    function replace_class(){
    var txt = document.getElementsByClassName('area_replace_<?= $data["c_idx"] ?>')[0].value;
    txt = txt.replace(/\n$/g, '');
    document.getElementsByClassName('area_replace_<?= $data["c_idx"] ?>')[0].value = txt;
    }
</script>

음. 혹시

area_replace_0 과 같은 클래스가 없는거 아닐까요?

 

아무래도 

getElementsByName 이거나

클래스명이 area_replace  정도로 통일된 형태거나 할거 같은데

보통은

var txt = document.getElementsByClassName('area_replace_<?= $data["c_idx"] ?>').value;

가 아닌

 

var txts = document.getElementsByClassName('area_replace');

var txt =  txts[<?php echo $data["c_idx"]?>].value;

 

와 같이 접근해야 하지 않을까 싶어보입니다.

 

 

getElementById() 와 달리 getElementsByClassName()는 여러개가 있을 수 있기 때문에 리턴값이 배열입니다.

그래서 아래와 같이 사용합니다.

 



var matches = element.getElementsByClassName('colorbox');
for (var i=0; i<matches.length; i++) {
    matches.item(i).classList.add('hueframe');
}

 

출처: https://developer.mozilla.org/ko/docs/Web/API/Element/getElementsByClassName

답변을 작성하시기 전에 로그인 해주세요.
전체 76
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT