1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="UTF-8 ">
5+ < title > Title</ title >
6+ < style >
7+ html , body {
8+ height : 100% ;
9+ }
10+ # div1 {
11+ height : 100% ;
12+ }
13+ </ style >
14+ </ head >
15+ < body >
16+ < div id ="div1 ">
17+ < div class =" box1 box2 box3 box4 "> div1111111</ div >
18+ < div class ="box1 box2 box3 "> div2</ div >
19+ < div class ="box1 box2 "> div3</ div >
20+ < div class ="box1 "> div4</ div >
21+ < p class ="box1 box2 box3 box4 "> p1</ p >
22+ < p class ="box1 box2 box3 "> p2</ p >
23+ </ div >
24+ < script src ="utils.js "> </ script >
25+ < script >
26+ var oDiv = document . getElementById ( 'div1' ) ;
27+ var aDiv = oDiv . getElementsByTagName ( 'div' ) ;
28+ var aList = utils . getByClass ( ' box1 box2 box3 box4 ' , oDiv ) ;
29+ for ( var i = 0 ; i < aList . length ; i ++ ) {
30+ aList [ i ] . style . height = '50px' ;
31+ aList [ i ] . style . background = 'red' ;
32+ }
33+ //utils.removeClass(aDiv[0],'box2')
34+ //utils.addClass(aDiv[2],'box2 box5 box6');
35+ //console.log(aDiv[0])
36+ /*utils.setCss(aDiv[0],'background','blue')
37+ utils.setCss(aDiv[0],'height','100%')
38+ utils.setCss(aDiv[0],'float','left');
39+ alert(aDiv[0].currentStyle.styleFloat)*/
40+ utils . css ( aDiv [ 0 ] , 'height' , '100%' )
41+ /*
42+ * getElementsByClassName//在IE6-8下不支持
43+ * 统一的按照'getComputedStyle' in window
44+ * 标准浏览器下-getElementsByClassName
45+ * IE6-8下-自己处理兼容;
46+ * 1.字符串转数组:['box1','box2','box3','box4];
47+ * 2.分别校验oDiv这个容器下,所有的元素的className,看其是否包含数组中的每一项,如果都包含,那么这个元素就是我们要找的,把他放入数组
48+ * 3.返回数组
49+ * */
50+ function getByClass ( strClass , curEle ) {
51+ curEle = curEle || document ;
52+ //标准浏览器下-getElementsByClassName
53+ if ( 'getComputedStyle' in window ) {
54+ return Array . prototype . slice . call ( curEle . getElementsByClassName ( strClass ) ) ;
55+ }
56+ //处理IE6-8的兼容问题:
57+ //1.字符串转数组:先去除首尾空格,再按照空格切分成数组
58+ var aryClass = strClass . replace ( / ( ^ + ) | ( + $ ) / g, '' ) . split ( / \s + / g) ;
59+ //2.拿到当前容器下所有的子元素
60+ var nodeList = curEle . getElementsByTagName ( '*' ) ; //通配符*代表所有
61+ var ary = [ ] ;
62+ //3.逐个校验每个元素的className是否包含数组中的每一项;
63+ for ( var i = 0 ; i < nodeList . length ; i ++ ) {
64+ var curNode = nodeList [ i ] ;
65+ var bOk = true ; //假设该元素的class中包含数组中的每一项
66+ for ( var j = 0 ; j < aryClass . length ; j ++ ) {
67+ var reg = new RegExp ( '\\b' + aryClass [ j ] + '\\b' ) ;
68+ //如果有一项不合格,boK=false;立即跳出循环
69+ if ( ! reg . test ( curNode . className ) ) {
70+ bOk = false ;
71+ break ;
72+ }
73+ }
74+ if ( bOk ) {
75+ ary . push ( curNode ) ;
76+ }
77+ }
78+ return ary ;
79+ }
80+ </ script >
81+ </ body >
82+ </ html >
0 commit comments