>웹 프론트엔드 >JS 튜토리얼 >일반적인 원시 JS 선택기 사용 방법_javascript 기술 요약

일반적인 원시 JS 선택기 사용 방법_javascript 기술 요약

WBOY
WBOY원래의
2016-05-16 16:52:581187검색

공통 getElementById, getElementsByName, getElementsByTagName. 하지만 외국인들은 이러한 API에 만족하지 않아서 getElementsByClassName을 고안했습니다. 나중에 jQuery 선택기가 조금씩 등장했습니다. 여기서는 원래 js 선택에 대해서만 이야기합니다.

1.getElementById

가장 일반적으로 사용되는 선택기이며 ID별로 위치합니다.

예:

var test=document.getElementById(" test ").value;//문서에서 테스트 ID가 있는 요소의 값을 가져오고 이를 테스트 얼굴 변경

2.getElementsByName

예:

var에 할당합니다. test= document.getElementByName("test");//문서에서 test라는 요소의 노드를 가져와 테스트 변수에 할당합니다. 이때 테스트 변수는 배열입니다

3. getElementsByTagName

예시:

var test=document.getElementsByTagName("test");//이때 문서에서 test 클래스의 요소 노드를 가져와서 test에 할당합니다. , 테스트 변수는 배열이고 이 선택기는 IE5, 6, 7, 8에서 사용할 수 없습니다.

4.getElementsByClassName

이 선택기는 js API에서 찾을 수 없습니다. 이를 사용하려면 메서드를 직접 정의해야 합니다. 일반적인 원칙 먼저 getElementsByTagName("*")을 사용하여 문서의 모든 요소를 ​​검색한 다음 탐색하고 정규식을 사용하여 일치하는 요소를 찾아 배열에 넣은 다음 돌려보내세요. 인터넷에는 이 선택기를 구현한 프로그래머가 많이 있습니다. 다음은 두 가지 예입니다.

(1) Robert Nyman이 작성한 Ultimate getElementsByClassName 체계는 2005년에 구현되었습니다. 외국인은 오래전부터 시행된 아주 먼 곳이다.

코드 복사 코드는 다음과 같습니다.

//세 가지 매개 변수가 모두 필요합니다. one 웹 페이지에는 클래스 이름이 "cell"인 요소가 5007개 있습니다. IE8은 1828~1844밀리초,
//IE6은 4610~6109밀리초, FF3.5는 46~48밀리초, Opera10은 31~32입니다. 밀리초, Chrome은 23~26밀리초,
//safari4는 19~20밀리초
function getElementsByClassName(oElm, strTagName, strClassName){
var arrElements = (strTagName == "*" && oElm. 모두)? oElm.all :
oElm.getElementsByTagName(strTagName);
var arrReturnElements = new Array()
strClassName = strClassName.replace(/-/g, "\-"); >var oRegExp = new RegExp("(^|\s)" strClassName "(\s|$)");
var oElement
for(var i=0; i < arrElements.length; i ){
oElement = arrElements[i];
if(oRegExp.test(oElement.className)){
arrReturnElements.push(oElement);
}
}
return ( arrReturnElements)
}

(2) Dustin Diaz("JavaScript Design Patterns"의 저자)가 제공하지만 호환성이 위만큼 좋지 않으며 IE5를 지원하지 않습니다.

코드 복사 코드는 다음과 같습니다.
//마지막 두 매개변수는 신뢰할 수 있습니다. 웹 페이지 찾기 클래스 이름이 "cell"인 요소는 5007개입니다. IE8은 78밀리초 동안 지속되고, IE6은 125~171밀리초 동안 지속됩니다.
// FF3.5는 42~48밀리초, Opera10은 31밀리초, Chrome은 22~ 25밀리초, safari4는 18~19밀리초
var getElementsByClass = function(searchClass,node,tag) {
var classElements = new Array()
if ( node == null )
node = document;
if ( 태그 == null )
tag = '*';
var els = node.getElementsByTagName(tag)
var elsLen =
var 패턴 = new RegExp(" (^|\s)" searchClass "(\s|$)");
for (i = 0, j = 0; i < elsLen; i ) {
if ( 패턴. test(els[ i].className) ) {
classElements[j] = els[i];
j ;
}
}
return classElements;

------------------------------- ---- --------------------------------- ---- --------------------------------- ---- ----
참고: 이는 현재 요소의 노드를 나타낼 수 있습니다.

------------------------------- ------ ------------------ ------ ------------------ ------ --------

이벤트 등 지식 포인트를 매칭하기 위해 일반적으로 사용되는 방법은 다음과 같습니다.



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.