Web/Javascript

javascript로 css class 내용 바꾸기

saltdoll 2013. 10. 24. 13:49
반응형

기본 형식의 clss내용 바꾸기는 className으로 처리한다.


javascript를 통해서, css의 class의 내용을 변경하는 방법입니다.

document.getElementById('tab1').className = "ewu tabBtn tabOn";


javascript를 통해서, style.disply처리

document.getElementById('table1').style.display = "block";

document.getElementById('table2').style.display = "none";




CSS 클래스 addClass 처리하기

출처: 

[자바스크립트] jquery 없이 DOM의 CSS 클래스 addClass, toggleClass, removeClass 구현하기



addClass 처리

: css 클래스를 추가하는 함수로, element와 class명을 받도록 한다.

1
2
3
function addClass(element, className) {
    element.className += " " + className;
};



removeClass 처리

: css 클래스를 제거하는 함수로, element와 class명을 받도록 한다. removeClass 함수의 경우는 addClass와는 조금 다르게 className이 중간에 있을수도 있으므로 그러한 것들을 고려해야한다. RegExp로 구현한다면 쉽게 구현이 가능하다.

1
2
3
4
function removeClass(element, className) {
    var check = new RegExp("(\\s|^)" + className + "(\\s|$)");
    element.className = element.className.replace(check, " ").trim();
};

: 위의 RegExp를 설명한다면, 일단 className은 앞에 공백(\\s)이나 문자열의 시작(^)이 오고, className의 뒤에는 또 공백(\\s)이나 파일의 끝($)이 오는 것을 감지하여 그 부분을 " " 공백으로 바꿔주고, 맨 앞이나 뒤였다면 공백을 없애주는 trim() 함수를 호출하는 것이다. 단순히 replace(className)으로 안하는 것은 예를 들면 현재 className이 "hamburger ham" 인 경우 replace(ham)만 쓰게 되면 앞있는 hamburger의 ham이 삭제 됨으로써 "burger ham" 이 될 수 있는 위험성이 있기 때문이다. 이는 "on" 등과 같은 클래스를 remove할 때에 더욱더 조심해야한다. 맨 뒤에 trim을 해주는 것은 빈 공백 " "으로 바꿔줬기 때문에 만약 맨뒤나 맨 앞에 있는 경우 계속 추가/삭제를 해서 공백이 늘어나는 것을 방지하기 위함이다.


toggleClass 처리

: css 클래스가 있으면 켜주고 없으면 추가하는 함수로, element와 className을 인자로 받는다. toggleClass의 경우 위의 두 함수를 사용할수도 있지만 어짜피 removeClass와 같은 RegExp를 하나 사용해야하는데다 간단하므로 위의 함수들을 굳이 안쓰고 그냥 구현해도 그다지 길어지지 않는다.

1
2
3
4
5
6
7
8
function toggleClass(element, className) {
    var check = new RegExp("(\\s|^)" + className + "(\\s|$)");
    if (check.test(element.className) {
        element.className = element.className.replace(check, " ").trim();
    } else {
        element.className += " " + className;
    }
}


반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)