<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>百度音乐</title>
<script type="text/javascript" src="js/vue.js"></script>
<style>
body,ul,li{
margin: 0;
padding: 0;
list-style: none;
}
.list-body li:nth-child(even){
background: yellow;
}
.list-body li:nth-child(odd){
background: #fff;
}
.list-body li:hover{
background: green;
}
.list-body li.checkedColor{
background: green;
}
</style>
<script>
let data=[
{
id:Date.now()+Math.random(),
name:'邓紫棋',
song:'泡沫',
checked:false,
album:10
},
{
id:Date.now()+Math.random(),
name:'张杰',
song:'天下',
checked:true,
album:10
},
{
id:Date.now()+Math.random(),
name:'邓紫棋',
song:'泡沫',
checked:false,
album:10
},
]
</script>
</head>
<body>
<div class="wrap" id="app">
<div class="baidu">
<ul class="list list-head">
<li>
<div>
<input type="checkbox" v-model="isCheckedAll"/>全选
</div>
<span>歌单</span>
<span>歌手</span>
<span>专辑</span>
</li>
</ul>
<ul class="list list-body">
<li
v-for="item in songList"
>
<div>
<input v-model="item.checked" type="checkbox" />
</div>
<span>{{item.song}}</span>
<span>{{item.name}}</span>
<span>{{item.album}}</span>
</li>
</ul>
<div class="select">
<span class="selectAll">
<span>统计:</span>
</span>
<div class="others">
<span><em></em>选中的歌手有:{{selectedSongersLen}}位</span>
<span><em></em>专辑有{{album}}张</span>
</div>
</div>
</div>
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
songList:data
},
computed:{
isCheckedAll:{
get(){
console.log('取值')
return this.songList.every(function(item){
return item.checked
});
},
set(newValue){
console.log('设置值了')
console.log(newValue)
this.songList.forEach(item=>item.checked=newValue)
}
},
selectedSongersLen(){
let songer=this.songList.filter(item=>item.checked)
return fn(songer).length
},
album(){
return this.songList.filter(item=>item.checked).reduce((n,item2)=>n+item2.album,0)
// let n=0;
// this.songList.forEach(function(item){
// n+=item.album
// })
// return n;
}
}
})
// 去重
function fn(option){
var json={}
var arr=[]
option.forEach((item)=>{
console.log(json[item.nama])
if(!json[item.name]){
json[item.name]=true
arr.push(item)
}
})
console.log(arr)
return arr;
}
</script>
</html>
![]()