1、电影列表,点击谁谁就加粗
Vue中样式的动态绑定,使用currentindex(自己添加)。一般进行遍历的时候都会用到item 和index
<style>
.bold {
font-weight: 900
}
</style>
</head>
<body>
<div id="app">
<ul v-for="(item,index) in movies">
<li :class="{bold:index==curentindex}" @click="cli(index)"> {{item}}</li>
</ul>
</div>
<script src="/demo3_824/js文件/vue.js"></script>
<script>
let data = {
movies: ['电影1', '电影2', '电影3', '电影4'],
curentindex: ''
}
const app = new Vue({
el: '#app',
data: data,
methods: {
cli(index) {
this.curentindex = index
}
}
})
</script>
</body>
2、购物车
需求:点击增加或减少,删除完显示购物车为空。
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://how2j.cn/study/js/jquery/2.0.0/jquery.min.js"></script>
<link href="https://how2j.cn/study/css/bootstrap/3.3.6/bootstrap.min.css" rel="stylesheet">
<script src="https://how2j.cn/study/js/bootstrap/3.3.6/bootstrap.min.js"></script>
</head>
<body>
<div id="app">
<div v-show="items.length>0">
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<th>商品编号</th>
<th>商品名称</th>
<th>商品单价</th>
<th>商品数量</th>
<th>商品总价</th>
<th>商品操作</th>
</thead>
<tbody>
<tr v-for="(item,index) in items">
<td>{{index+1}}</td>
<td>
{{item.name}}
</td>
<td>
{{item.price}}
</td>
<td>
<button @click="decre(index)" :disabled="item.number<=0">-</button> {{item.number}} <button @click="incre(index)">+</button>
</td>
<td>
{{totalprice(index)}}
</td>
<td><button @click="del(index)">删除</button></td>
</tr>
</tbody>
</table>
<h4>合计:{{Price}}</h4>
</div>
<div v-show="items.length<=0">购物车为空</div>
</div>
<script src="/demo3_824/js文件/vue.js"></script>
<script>
let data = {
items: [{
name: '苹果',
price: 20,
number: 1,
totoalprice: 0
}, {
name: '香蕉',
price: 13,
number: 1,
totoalprice: 0
}, {
name: '哈密瓜',
price: 50,
number: 1,
totoalprice: 0
}]
}
const app = new Vue({
el: '#app',
data: data,
//商品总价部分的数据处理
computed: {
Price() {
let result = 0
for (i = 0; i < this.items.length; i++) {
result += this.items[i].price * this.items[i].number
}
return '¥' + result.toFixed(2)
}
},
methods: {
totalprice(index) {
this.items[index].totoalprice = this.items[index].price * this.items[index].number
return this.items[index].totoalprice
},
decre(index) {
this.items[index].number--
},
incre(index) {
this.items[index].number++
},
del(index) {
this.items.splice(index, 1)
}
}
})
</script>
</body>
</html>
三、todolist
参考:Vue案例之todoLIst实现 - 小小的少年 - 博客园 (cnblogs.com)
<style>
.do {
text-decoration: line-through;
}
.div1 {
width: 400px;
height: 100px;
border-style: dashed;
margin-bottom: 50px;
}
.div2 {
width: 500px;
border-style: dashed
}
</style>
</head>
<body>
<div id="app">
<div class="div1">
<h2>新增</h2>
<input type="text" v-model="willdoing"><span> </span><button @click="add">添加</button>
</div>
<div>
<div class="div2" v-show="listshow[0]">
<!-- 所有任务列表 -->
<h2>所有任务列表</h2>
<ul>
<li v-for="(item,index) in listwill" @click="ido(index)" :class="{do:item.cur}">
{{item.name}}
</li>
</ul>
</div>
<!-- 已经完成的任务列表 -->
<div class="div2" v-show="listshow[1]">
<h2>完成任务列表</h2>
<ul>
<li v-for="(item,index) in listdone">
{{item.name}}
</li>
</ul>
</div>
<!-- 未完成的任务列表 -->
<div class="div2" v-show="listshow[2]">
<h2>未完成任务列表</h2>
<ul>
<li v-for="(item,index) in listless">
{{item.name}}
</li>
</ul>
</div>
</div>
<div class="div3">
操作:<button @click="btn1(0)">所有</button><span> </span><button @click="btn1(1)">完成</button><span> </span><button @click="btn1(2)">未完成</button>
</div>
</div>
<script src="/demo3_824/js文件/vue.js"></script>
<script>
let data = {
// listwill是数组,里面存放了一个个的对象,包括任务名称属性,和是否完成属性
listwill: [], //所有的任务列表
willdoing: ' ',
done: '',
cur: '',
//已经完成的任务列表
listdone: [],
//未完成的任务列表
listless: [],
//存放显示界面
listshow: [false, false, false]
}
const app = new Vue({
el: '#app',
data: data,
computed: {
},
methods: {
//1、添加计划进去
add() {
if (this.willdoing.trim() != '') {
let obj = {
name: this.willdoing,
cur: false
}
this.listwill.push(obj)
this.listless.push(obj)
this.willdoing = ""
this.listshow = [false, false, false]
this.listshow[0] = true
} else {
alert('请输入..')
}
},
//添加点击时间,点击后,文字划伤中线
ido(index) {
if (this.listless.length > 0) {
console.log(2);
this.listwill[index].cur = true
this.listdone.push(this.listwill[index])
console.log(this.listwill[index]);
this.listless.splice(this.listless.indexOf(this.listwill[index]), 1)
//当所有的任务完成时,所有的操作就没有
}
if (this.listless.length == 0) {}
},
btn1(index) {
this.listshow = [false, false, false]
this.listshow[index] = true
}
}
})
</script>
</body>
</html>
v-model添加代办事项:
push()方法:想数组末尾添加元素
四、图书管理
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://how2j.cn/study/js/jquery/2.0.0/jquery.min.js"></script>
<link href="https://how2j.cn/study/css/bootstrap/3.3.6/bootstrap.min.css" rel="stylesheet">
<script src="https://how2j.cn/study/js/bootstrap/3.3.6/bootstrap.min.js"></script>
<style>
.red {
color: red
}
</style>
</head>
<body>
<div id="app">
<div>
<button @click="showpage(0)">全部</button>
<button @click="showpage(1)">已借阅</button>
<button @click="showpage(2)">未借阅</button> 总计{{totalbooks.length}}本,已借阅{{donebooks.length}},当前可借阅{{ingbooks.length}}本
</div>
<table class="table">
<thead>
<th>序号</th>
<th>图书名称</th>
<th>图书作者</th>
<th>图书价格</th>
<th>图书出版社</th>
<th>图书状态</th>
<th>图书操作</th>
</thead>
<!-- 全部书籍页面 -->
<tbody v-show="pageshow[0]">
<tr v-for="(item,index) in totalbooks">
<td>{{index+1}}</td>
<td>{{item.name}}</td>
<td>{{item.author}}</td>
<td>{{item.price}}</td>
<td>{{item.published}}</td>
<td v-bind:class='{red:item.status=="已借阅"}'>{{item.status}}</td>
<td><button @click="dothis(index)">{{item.cando}}</button></td>
</tr>
</tbody>
<!-- 已借阅书籍页面 -->
<tbody v-show="pageshow[1]">
<tr v-for="(item,index) in donebooks">
<td>{{index+1}}</td>
<td>{{item.name}}</td>
<td>{{item.author}}</td>
<td>{{item.price}}</td>
<td>{{item.published}}</td>
<td v-bind:class='{red:item.status=="已借阅"}'>{{item.status}}</td>
<td><button @click="dothis1(index)">{{item.cando}}</button></td>
</tr>
</tbody>
<!-- 未借阅书籍页面 -->
<tbody v-show="pageshow[2]">
<tr v-for="(item,index) in ingbooks">
<td>{{index+1}}</td>
<td>{{item.name}}</td>
<td>{{item.author}}</td>
<td>{{item.price}}</td>
<td>{{item.published}}</td>
<td v-bind:class='{red:item.status=="已借阅"}'>{{item.status}}</td>
<td><button @click="dothis2(index)">{{item.cando}}</button></td>
</tr>
</tbody>
</table>
</table>
</div>
<script src="/demo3_824/js文件/vue.js">
</script>
<script src="图书管理.js"></script>
</body>
</html>
let data = {
//存储图书信息
totalbooks: [{
name: 'JS程序设计',
author: '小明',
price: 99,
published: '机械工业出版社',
status: '未借阅',
cando: '借阅'
}, {
name: 'JS程序设计',
author: '小明',
price: 78,
published: '机械工业出版社',
status: '未借阅',
cando: '借阅'
}, {
name: 'JS程序设计',
author: '小明',
price: 49,
published: '机械工业出版社',
status: '未借阅',
cando: '借阅'
}, {
name: 'JS程序设计',
author: '小明',
price: 39,
published: '机械工业出版社',
status: '未借阅',
cando: '借阅'
}],
pageshow: [true, false, false]
}
const app = new Vue({
el: '#app',
data: data,
computed: {
//未借阅课本
ingbooks() {
let obj = []
obj = this.totalbooks.slice()
return obj
},
donebooks() {
let obj = []
for (let i = 0; i < this.ingbooks.length; i++) {
if (!this.totalbooks.includes(this.ingbooks[i])) {
obj.push(this.ingbooks[i])
// 一定要注意使用splice方法会修改原数组
}
}
return obj
}
},
methods: {
dothis(index) {
//借阅书籍
if (this.totalbooks[index].status == '未借阅') {
//1、更改书籍状态
this.totalbooks[index].status = '已借阅'
this.totalbooks[index].cando = '归还'
//修改已借阅书籍
this.donebooks.push(this.totalbooks[index])
//修改未借阅的书籍
this.ingbooks.splice(this.ingbooks.indexOf(this.totalbooks[index]), 1)
//归还书籍
} else if (this.totalbooks[index].status == '已借阅') {
this.totalbooks[index].status = '未借阅'
this.totalbooks[index].cando = '借阅'
//修改已借阅书籍
this.donebooks.splice(this.donebooks.indexOf(this.totalbooks[index]), 1)
//修改未借阅的书籍
this.ingbooks.push(this.totalbooks[index])
}
},
showpage(inde) {
this.pageshow = [false, false, false]
this.pageshow[inde] = true
},
dothis1(index) {
this.donebooks[index].status = '未借阅'
this.donebooks[index].cando = '借阅'
this.ingbooks.push(this.donebooks[index])
this.donebooks.splice(this.donebooks.indexOf(this.donebooks[index]), 1)
},
dothis2(index) {
this.ingbooks[index].status = '已借阅'
this.ingbooks[index].cando = '归还'
this.donebooks.push(this.ingbooks[index])
this.ingbooks.splice(this.ingbooks.indexOf(this.ingbooks[index]), 1)
}
}
})