jQuery 같은 프레임웍을 쓰지 않는다면 class name 으로 dom 셀렉팅을 할 수 없습니다.
지난번 javascript 스터디를 통해서 function 타입으로 제작하는 방법을 설명했었는데 조금 더 발전시켜 document 객체에 prototype으로 선언해 getElementById 와 같은 매서드의 형식으로 사용할 수 있도록 제작해봤습니다.
안타깝게도 Document 객체에 prototype 으로 선언하는 것이 IE 시리즈에선 허용되지 않아 아래와 같은 방식으로 우회했습니다.
테스트는 여기서 http://jsfiddle.net/rootbox/gtEkb/
document.getElementsByClassName = function(name) {
var obj = result = [];
var n = name.split(".");
var tag_name = null, class_name = null;
if(n.length == 2) {
tag_name = n[0];
class_name = n[1];
} else {
tag_name = "*";
class_name = n[0];
}
obj = document.getElementsByTagName(tag_name);
for(var i in obj) {
if(obj[i].className != class_name) continue;
result.push(obj[i]);
}
return result;
};
Element.prototype.getElementsByClassName = function(name) {
var obj = result = [];
var n = name.split(".");
var tag_name = null, class_name = null;
if(n.length == 2) {
tag_name = n[0];
class_name = n[1];
} else {
tag_name = "*";
class_name = n[0];
}
obj = this.getElementsByTagName(tag_name);
for(var i in obj) {
if(obj[i].className != class_name) continue;
result.push(obj[i]);
}
return result;
};
console.log(document.getElementsByClassName("p.a"));
console.log(document.getElementsByClassName("span.a"));
console.log(document.getElementsByClassName("a"));
console.log(document.getElementById("a").getElementsByClassName("span.a"));
우오와~~~~~ 대단하시네요!!!
역시 고수님!!!
왜..왜그러세요ㅠ
우오와~~~~~ 대단하시네요!!!
역시 고수님!!!
왜..왜그러세요ㅠ
아저씨 블로그 버리고 뭐하시는거에요!!
어라? 제대했어요?
헐… 댓글은 열라 빠르네요ㅠㅠㅠ
아저씨 진로상담 해주세요. 죽겠어요.
저 물어볼 사람이 아저씨 밖에 없어요…
ㅎ;;; 댓글 잘 안봐서;; 메일 보냈어요.
아저씨 블로그 버리고 뭐하시는거에요!!
어라? 제대했어요?
헐… 댓글은 열라 빠르네요ㅠㅠㅠ
아저씨 진로상담 해주세요. 죽겠어요.
저 물어볼 사람이 아저씨 밖에 없어요…
ㅎ;;; 댓글 잘 안봐서;; 메일 보냈어요.