星星评价js

分为两种封装形式 对象封装 和 函数封装

html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
<head>
<style>
*{margin:0; padding:0}
div ul{
display: flex;
}
div ul li{
list-style-type:none;
width: 50px; height: 50px; background-color:yellow; margin:0 10px; transition: all .3s;
}
div ul li.active{
background: red
}
</style>
</head>
<body>
<div>
<ul>
<li class="active">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>
</body>
</html>

对象封装JS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// var starObj = {
// lis:document.getElementsByTagName("li"),
// selectStar: 0,
// run :function(){
// this.hover()
// this.click()
// this.mouseout()
// } ,
// starShow : function(index){
// for(var i = 0; i<this.lis.length; i++){
// this.lis[i].className = i <= (index || this.selectStar) ? 'active' : ''
// }
// },
// hover :function(){
// var me = this;

// for(var i =0 ; i<this.lis.length; i++){
// //解决闭包问题
// this.lis[i].index = i;
// this.lis[i].onmouseover = function(){
// me.selectStar = 0;
// me.starShow(this.index)
// }
// }
// },
// click : function(){
// var me = this;
// for(var i =0 ; i<this.lis.length; i++){
// //解决闭包问题
// this.lis[i].index = i;
// this.lis[i].onclick = function(){
// me.selectStar = this.index
// me.starShow()
// console.log(`you pinfen is ${this.index + 1}`)
// }
// }
// },
// mouseout :function(){
// var me = this;

// for(var i =0 ; i<this.lis.length; i++){
// //解决闭包问题
// this.lis[i].index = i;
// this.lis[i].onmouseout = function(){

// me.starShow(0)
// //console.log(`you pinfen is ${this.index + 1}`)
// }
// }
// // this.starShow(0)
// }
// }

//starObj.run()

函数封装JS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function Star(){
this.lis = document.getElementsByTagName("li"),
this.selectStar = 0
};

Star.prototype = {
run:function(){
this.hover()
this.click()
this.mouseout()
},
starShow : function(index){
for(var i = 0; i<this.lis.length; i++){
this.lis[i].className = i <= (index || this.selectStar) ? 'active' : ''
}
},
hover :function(){
var me = this;

for(var i =0 ; i<this.lis.length; i++){
//解决闭包问题
this.lis[i].index = i;
this.lis[i].onmouseover = function(){
me.selectStar = 0;
me.starShow(this.index)
}
}
},
click : function(){
var me = this;
for(var i =0 ; i<this.lis.length; i++){
//解决闭包问题
this.lis[i].index = i;
this.lis[i].onclick = function(){
me.selectStar = this.index
me.starShow()
console.log(`you pinfen is ${this.index + 1}`)
}
}
},
mouseout :function(){
var me = this;

for(var i =0 ; i<this.lis.length; i++){
//解决闭包问题
this.lis[i].index = i;
this.lis[i].onmouseout = function(){

me.starShow(0)
//console.log(`you pinfen is ${this.index + 1}`)
}
}
// this.starShow(0)
}
}


var starObj = new Star()
console.log(starObj)

starObj.run()