전 9 개월 전 jquery를 돌았으며 선택기 엔진이 필요했습니다 (번거 로움없이 < 7 지원) 그래서이 기능을 만들어 document.querySelectorAll의 단순화 된 버전을했다 : 이것은 시간의 95 %에 완벽하게 잘 작동querySelectorAll을 사용하여 해당 클래스 이름을 가진 모든 요소를 가져옵니다.
// "qsa" stands for: "querySelectorAll"
window.qsa = function (el) {
var result = document.querySelectorAll(el)[0];
return result;
};
을하지만, W3C에 나는 잠시 동안이 문제를 지금 했어 내가 MDN을 연구 한 , 그래서 잊지 않기 위해 Google :) 아직 요청한 클래스의 첫 번째 요소 만 얻는 이유에 대한 답을 아직 찾지 못했습니다. 그리고 반환되는 첫 번째 요소는 끝에있는 "[0]"으로 인해 발생하지만 함수를 제거하면 인덱스 변수를 사용하여 for 루프를 만들려고했습니다. 이 같은 클래스와 요소의 길이에 따라 값의 증가 : 지금은 시작 했어하여
window.qsa = function (el) {
var result, i = 0, el = document.querySelectorAll(el);
while(i < el.length) {
i++;
}
result = el[i];
return result;
};
: 그래서 작동하지 않았다
window.qsa = function (el) {
var result, el = document.querySelectorAll(el);
for(var i = 0; i < el.length; ++i) {
result = el[i];
}
return result;
};
다시는이 같은 while 루프를 시도 아무것도 작동하는지 궁금해? 나는 document.querySelectorAll ... 하지만 내 고집 내부 - 자기가 가고 계속 매우 좌절 점점 그리고 난 (계층화주기) 실패 계속 그래서 지금은 정말이 질문에 질문하는 시간임을 알고
을 왜 모든 클래스가 아닌 첫 번째 요소 만 반환하는 것입니까?
왜 for 루프가 실패합니까?
while 루프가 작동하지 않는 이유는 무엇입니까?
모든/모든 도움을 많이 주셔서 감사합니다.
를 반환되는 배열을 사용할 수 있습니다? –
'return document.querySelectorAll (el)'을 사용하는 이유는 무엇입니까? –
문제는 확실히 당신이 그것을 사용하고있는 곳입니다. [0]을 제거하면 단일 요소가 아닌 요소의 NodeList가 반환되므로 요소에 액세스 할 때 배열로 처리하면됩니다. –