2016-10-10 3 views
0

이 질문에는 이전에 물어 보았지만 (a) 오래전에 (b) 일부 답변에는 jQuery가 포함되었습니다.변수가 가능한 DOM 요소인지 여부를 테스트하는 자바 스크립트

IE> = 8을 포함한 현재 브라우저의 경우 변수가 DOM 요소인지 테스트하는 가장 간단한 방법은 무엇입니까?

요소가 현재 DOM에 있는지 여부는 신경 쓰지 않습니다. 변수가 유효한 요소 객체를 포함하는지 여부에 더 관심이 있습니다.

문서 요소와 문자열 중 하나를 선택해야하는 함수를 작성하고 있습니다. 여기

function doit(element) { 
    if (element instanceof Element) { 
     // document element 
    } else if (typeof element == 'string') { 
     // string 
    } 
    // else out of luck 
} 

는 문자열 요소에 대한 instanceoftypeof을 사용, 나는 다른 곳에서 읽은 내용 조립할 : 여기에 내 걸릴 것입니다.

IE (Internet Explorer)를 포함하면 오늘날의 브라우저에서 가장 효율적이고 올바른 방법입니까?

감사

+0

, 당신이 당신의 요소가 DOM에 실제로하는지 테스트하려면? 예인 경우 코드가 작동하지 않습니다. –

+0

좋은 지적입니다. 아니요, 변수에 유효한 HTML 요소가 포함되어 있는지 여부입니다. 나는 그 질문을 편집 할 것이다. – Manngo

+0

"문서 요소"는 특정한 의미를 가지며, 이는 'Node.nodeType === Node.DOCUMENT_NODE' - devtools에서'# document '로 표시되는 노드입니다. 그것이 당신이 의미하는 것이 아니라면 다른 용어를 선택하십시오. "DOM 요소"를 의미한다면, 그 말을하십시오. –

답변

-1

당신은 그것을 다른 방법을 확인할 수 있습니다 주위 좋아 :

function doit(element) { 
    if(typeof element === 'string') { // to be save -> always use type check in js (===) 
     // string 
    } 
    else { 
     // assuming it is a document element 
    } 
} 

은 당신이 정말로, 당신은 또한 this post에 의존 수있는 HTML 요소를 선택하십시오.

스포일러 : ... instanceof HTMLElement 당신은 의미

+0

이전에 그걸 보았습니다. 문제는 (a) jQuery와 관련이 있으며, (b) 번호 나 다른 객체와 같은 것이 아니라고 가정하는 것이 안전하다고 생각하지 않습니다. – Manngo

+0

jQuery와 관련된 이유가 무엇입니까? 이것은 [MDN 문서] (https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement)에서 발췌 한 것입니다. 진정한 이야기 ​​그것은 차별화하는 가장 좋은 방법은 아니지만 가장 빠른 방법 중 하나입니다. – bash0ne

+0

@bashOne : 질문은 "jquery : 입력 변수가 dom 요소인지 테스트합니다."라는 질문 자체가 중요하지는 않지만 사실입니다. MDN 문서는 이것이 IE8에서 지원되는지 여부가 불분명합니다. 내가 말할 수있는 한, 그것은 아닙니다. – Manngo