2

getElementsByTags()에는 '*'선택자를 사용할 수 있지만 getElementsByClassName() 또는 getElementByID()에는 사용할 수 없습니다.* selector는 getElementsByTagName()에서 작동하지만 javascript에서는 getElementsByClassName()에 대해 작동하지 않습니까?

누군가 설명 할 수 있습니까? ?

<body> 
<div class="yahoo"> 
</div> 
<p class="yahoo"> 
</p> 
<ul class="yahoo"> 
</ul> 

<div class="yahoo"> 
</div> 


<input type='text'> 
    <script type="text/javascript"> 
    function select(){ 
    var elements = document.getElementsByTagName("*") 
    var elements2 = document.getElementsByClassName("*") 
    console.log(elements) 
} 

select() 
</script> 
+4

_ _ - *'_by의 definition_는 "어떤 의미"가능한 모든 요소 이름 ', 그리고'때문에 "누군가가 이유를 설명 할 수 있습니까?" 가능한 클래스 이름 ". – CBroe

답변

2

이 : 그리고, 자바 스크립트 방법은 IE에서 하위 문자열 선택기를 사용 어쨌든이 (getElementsByClassName가 ("* 프로필") 클래스 명이 '프로필'을 포함 요소를 선택하기 위해 아래

은 내 코드입니다

getElementsByTagName
    반환 : 그 상태 동작을 준수 DOM-레벨 2 코어 specification 이 요소 트리의 선주문 순회에서 발생한 순서대로 주어진 태그 이름을 가진 모든 자손 요소의 NodeList.
    매개 변수
이름 유형의 DOMString
에 일치하는 태그의 이름의
. 특수 값 "*"은 모든 태그와 일치합니다.

getElementsByClassName 메서드의 경우에는 특별한 의미가없는 *이며 클래스 이름으로 처리됩니다.

UPD. 두 번째 질문 주소 : 어쨌든

이되는 것은 (getElementsByClassName가 ("* 프로필") 클래스 명이 '프로필'을 포함 요소를 선택하는 즉, 자바 스크립트 방법에서 하위 문자열 선택기를 사용하려면

을 당신은 '수 그것은 가능하지만 t이 또 다른 매우 유용한 querySelectorAll 방법을 사용 getElementsByClassName를 사용

document.querySelectorAll('[class*="profile"]'); 
+0

당신과 나는 같은 질문의 여러 부분을 다뤘습니다. (우리 둘다 편집에서 다른 부분에 대답하려고합니다.) 당신이 내 대답을 당신의 것에 통합하고 싶다면 (하나의 깨끗한 해결책을 위해서) 나는 그것을 고맙게 생각할 것이다; 내 대답을 삭제하고 하나의 완성 된 솔루션을 남겨 둘 수 있습니다. –

+0

@DavidThomas 지적 해 주셔서 감사합니다. 실제로 두 번째 부분을 놓쳤습니다! 그러나 당신의 대답을 제거 할 필요가 없습니다. 유용한 링크와 설명이 있습니다. – dfsq