기본 형식의 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; } } |
'Web > Javascript' 카테고리의 다른 글
javascritp 객체 전체 속성 확인하기 (0) | 2014.01.09 |
---|---|
[jQuery] horizontal accordion menu (0) | 2014.01.08 |
jqeury cookie 관리에 유용 (0) | 2013.11.12 |
[javascript] 정규식을 이용한 숫자만, 소수점 이하 제거 추출하기 (0) | 2013.10.31 |
브라우저에서 자바스크립트를활성하는 방법 Site (0) | 2013.10.17 |
jquery 의 innerHeight()함수 높이 HTML document 부분만 (0) | 2013.10.01 |
IE전용 document.all(id또는 index no)와 event.srcElement와 sourceIndex (0) | 2013.09.25 |
[jQueryMobile] ThemeRoller 로 쉽게 theme 만들기 (0) | 2013.07.25 |
(로그인하지 않으셔도 가능)