练习
1. 渲染所有科目都及格了的学生。
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>2</title> </head> <body> <div id="app"> <table border="1" style="margin: auto" rules="all"> <tr> <th>排名</th> <th>姓名</th> <th>数学</th> <th>语文</th> <th>英语</th> <th>总分</th> </tr> <!--有几个人,就循环渲染几行--> <tr v-for="(score, i) in scores" v-if="score.math>=60&&score.chinese>=60&&score.english>=60"> <td>{{ i + 1 }}</td> <td v-for="v in score">{{v}}</td> </tr> </table> </div> </body> <script src="js/vue.js"></script> <script> ` let scores = null; $.ajax({ url:'', success(response) { scores = response.data } }); `; // 模拟当前页面加载成功,从后台获取操作的数据 let scores = [ { name: 'Bob', math: 97, chinese: 89, english: 67 }, { name: 'Tom', math: 67, chinese: 52, english: 98 }, { name: 'Jerry', math: 72, chinese: 87, english: 89 }, { name: 'Ben', math: 92, chinese: 87, english: 59 }, { name: 'Chan', math: 47, chinese: 85, english: 92 }, ]; // 补充:for in遍历的是取值关键 | for of遍历的是值 // 添加总分 for (score of scores) { score.total = score.math + score.chinese + score.english; } // console.log(scores); // 按照总分排序 for (let i=0; i<scores.length-1; i++) { for (let j=0; j<scores.length-1-i; j++) { if (scores[j].total < scores[j+1].total) { let temp = scores[j]; scores[j] = scores[j+1]; scores[j+1] = temp; } } } console.log(scores); new Vue({ el: '#app', data: { // 属性名与值为变量的变量名相同,可以简写省略值 scores, } }) </script> </html>
2. 筛选规则:
i)有三个按钮:语文、数学、外语,点击谁谁高亮,且当前筛选规则采用哪门学科
ii)两个输入框,【】~【】,前面天最小分数,后面填最大分数,全部设置完毕后,表格的数据会被更新只渲染满足所有条件的结果
举例:点击语文,输入【86】~【87】,那就只会渲染Jerry和Ben两条数据
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>3</title> <style> .active { background-color: pink; } </style> </head> <body> <div id="app"> <div style="width: 400px; margin: 20px auto"> <button @click="subject = 'math'" :class="{active: subject === 'math'}">数学</button> <button @click="subject = 'chinese'" :class="{active: subject === 'chinese'}">语文</button> <button @click="subject = 'english'" :class="{active: subject === 'english'}">英语</button> <input type="number" min="0" max="100" v-model="min"> ~ <input type="number" min="0" max="100" v-model="max"> </div> <table width="400" border="1" style="margin: auto" rules="all"> <tr> <th>排名</th> <th>姓名</th> <th>数学</th> <th>语文</th> <th>英语</th> <th>总分</th> </tr> <tbody v-if="subject === 'math'"> <tr v-for="(score, i) in scores" v-if="score.math>=min && score.math<=max || (!min || !max)"> <td>{{ i + 1 }}</td> <td v-for="v in score">{{v}}</td> </tr> </tbody> <tbody v-else-if="subject === 'chinese'"> <tr v-for="(score, i) in scores" v-if="score.chinese>=min && score.chinese<=max || (!min || !max)"> <td>{{ i + 1 }}</td> <td v-for="v in score">{{v}}</td> </tr> </tbody> <tbody v-else-if="subject === 'english'"> <tr v-for="(score, i) in scores" v-if="score.english>=min && score.english<=max || (!min || !max)"> <td>{{ i + 1 }}</td> <td v-for="v in score">{{v}}</td> </tr> </tbody> <tbody v-else> <tr v-for="(score, i) in scores"> <td>{{ i + 1 }}</td> <td v-for="v in score">{{v}}</td> </tr> </tbody> </table> </div> </body> <script src="js/vue.js"></script> <script> ` let scores = null; $.ajax({ url:'', success(response) { scores = response.data } }); `; // 模拟当前页面加载成功,从后台获取操作的数据 let scores = [ { name: 'Bob', math: 97, chinese: 89, english: 67 }, { name: 'Tom', math: 67, chinese: 52, english: 98 }, { name: 'Jerry', math: 72, chinese: 87, english: 89 }, { name: 'Ben', math: 92, chinese: 87, english: 59 }, { name: 'Chan', math: 47, chinese: 85, english: 92 }, ]; // 补充:for in遍历的是取值关键 | for of遍历的是值 // 添加总分 for (score of scores) { score.total = score.math + score.chinese + score.english; } // console.log(scores); // 按照总分排序 for (let i=0; i<scores.length-1; i++) { for (let j=0; j<scores.length-1-i; j++) { if (scores[j].total < scores[j+1].total) { let temp = scores[j]; scores[j] = scores[j+1]; scores[j+1] = temp; } } } console.log(scores); new Vue({ el: '#app', data: { // 属性名与值为变量的变量名相同,可以简写省略值 scores, min: '', max: '', subject: '', } }) </script> </html>