Web前端基于Vue实验的实现

1.使用jquery或vue实现如下界面效果:

 

提示

  • 奇数行背景色:#FFF38F;偶数行背景色:#FFFFEE;选中行:#FF6500
  • 选中行时,设置单选框选中状态

代码实现:

<template>
 <div>
    <table>
        <tr>
        <th></th>
        <th>姓名</th>
        <th>性别</th>
        <th>暂住地</th>
    </tr>
    <tr v-for="item,index in list" :key = index :class="{'odd':index%2!=0,'even':index%2==0}" ref="li">
        <td><input  type="radio" value=1 @change="change(index)"></td>
        <td>{{ item.name }}</td>
        <td>{{ item.sex }}</td>
        <td>{{ item.position }}</td>
        
    </tr>

    </table>
 </div>
</template>

<script>
 export default {
 data () {
 return {
    list:[
    {name:"张三",sex:"男",position:"四川成都"},
    {name:"李四",sex:"女",position:"四川绵阳"},
    {name:"王五",sex:"男",position:"四川南充"},
    {name:"赵六",sex:"男",position:"四川自贡"},
    {name:"陈勇",sex:"男",position:"四川德阳"},
    {name:"罗梅",sex:"女",position:"四川宜宾"}
]
  }
 },
 methods:{
    change(index){
        //this.$refs.test.style.background = "red";
        this.$refs.li[index].style.background=" #FF6500"
    }

 }
}

</script>
<style scoped>
.odd{
    background-color:#FFFFEE;
}
.even{
    background-color: #FFF38F;
}
table{
    border: 1px solid #000;
    border-collapse:collapse;
    width: 500px;
}
td{
    width: 100px;
    border: 1px solid #000;
}
th{
    width: 100px;
    border: 1px solid #000;
}
</style>

主要通过vue内嵌的$ref属性以及change事件和class的绑定属性来实现效果

2.使用jquery或vue实现内容过滤,效果如 下图所示:

 

代码实现:

代码:
<template>
 <div>
    <div>
    <div id="search">查询:</div>
    <div><input v-model="searchdata" type="text"></div>
    </div>
    <table>
        <tr>
        <th></th>
        <th>姓名</th>
        <th>性别</th>
        <th>暂住地</th>
    </tr>
    <tr v-for="item,index in list" :key = index v-show="flag[index]" :class="{'odd':index%2!=0,'even':index%2==0}" ref="li">
        <td><input type="radio" value=1 @change="change(index)"></td>
        <td>{{ item.name }}</td>
        <td>{{ item.sex }}</td>
        <td>{{ item.position }}</td>
        
    </tr>

    </table></div>
</template>

<script>
import input from './input.vue';
 export default {
  components: { input },
 data () {
 return {
    list:[],
 originlist:[
    {name:"张山",sex:"男",position:"浙江宁波"},
    {name:"李四",sex:"女",position:"浙江杭州"},
    {name:"王五",sex:"男",position:"湖南长沙"},
    {name:"赵六",sex:"男",position:"浙江温州"},
    {name:"陈勇",sex:"男",position:"浙江杭州"},
    {name:"罗梅",sex:"女",position:"浙江杭州"}
 ],
 flag:[true,true,true,true,true,true],
 searchdata:""
  }
 },
 methods:{
    change(index){
        //this.$refs.test.style.background = "red";
        this.$refs.li[index].style.background=" #FF6500";
        
    },
 },
 watch:{
    /*handler(新值,旧值)

filperson是个空数组,用来接收persons通过过滤后的数组,上面遍历的数组也是这个数组

person是一个原数组,里面包含所以的元素

filter是筛选的工具,返回值时是筛选名字中存在的值*/

            searchdata:{
                immediate:true,//在框的值还没变化时执行如下函数显示出所有的情况,immediate:TRUE 可以让页面加载的的自动加载一次
                handler(val){
                    this.list = this.originlist.filter((p)=>{
                    return p.name.indexOf(val) !==-1
                })
                }
            }
        }
}

</script>
<style scoped>
.odd{
    background-color:#FFFFEE;
}
.even{
    background-color: #FFF38F;
}
table{
    border: 1px solid #000;
    border-collapse:collapse;
    width: 500px;
}
td{
    width: 100px;
    border: 1px solid #000;
}
th{
    width: 100px;
    border: 1px solid #000;
}
#search{
    float: left;
}
</style>

在上一题交替的效果上,通过watch监听属性来实现模糊查询的效果

3.使用 JQuery或vue 实现级联选择框,界面实现效果参考如下图。

代码实现:

template>
 <div>
<select id="province" @change="change($event)" v-model="option">
    <option v-for="province,index in provinces" :key="index" :value="province.value">
        {{ province.text }}
    </option>
</select>
<select v-model="follow">
    <option v-for="item,index in cities" :key="index" v-show="option==item.id">
                    {{item.text}}
    </option>
</select>
</div>
</template>

<script>
 export default {
 data () {
 return {
    provinces:[
        {text:"请选择",value:0},
        {text:"河北省",value:1},
        {text:"辽宁省",value:2},
        {text:"山东省",value:3}
],
    option:0,
    cities:[ 
            {text:"请选择",id:1},
            {text:"石家庄",id:1},
            {text:"邯郸",id:1},
            {text:"唐山",id:1},
            {text:"张家口",id:1},
            {text:"廊坊",id:1},
            {text:"请选择",id:2},
            {text:"沈阳市",id:2},
            {text:"大连市",id:2},
            {text:"鞍山市",id:2},
            {text:"抚顺市",id:2},
            {text:"本溪市",id:2},
            {text:"请选择",id:3},
            {text:"济南市",id:3},
            {text:"青岛市",id:3},
            {text:"淄博市",id:3},
            {text:"枣庄市",id:3},
            {text:"东营市",id:3},
 
        ],
  }
 },
 methods:{
    change(e){
       this.option=e.target.value
    },
 }
}

</script>
<style scoped>
</style>

 此题有更好的代码优化方式,笔者只是完成实验,未做进一步优化,选择了通过父级Id的方式将子元素进行分组,通过V-show来控制是否显示

4.使用Jquery或vue实现将输入数据添加至表格中,通过点击Delete可删除所在行数据

 

运行截图:

代码实现:

<template>
 <div>
    <div id="add">添加新员工</div>
    <div id="first">
    <div id="name">name:</div>
    <div><input v-model="name" type="text"></div>

    <div id="email">email:</div>
    <div><input v-model="email" type="text"></div>

    <div id="salary">salary:</div>
    <div><input v-model="salary" type="text"></div>
    </div>
    <div id="submit"><button  @click="submit">Submit</button></div>
    
    <div id="table"><table>
        <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Salary</th>
        <th> </th>
    </tr>
    <tr v-for="item,index in person" :key="index">
        <td>{{ item.name }}</td>
        <td>{{ item.email }}</td>
        <td>{{ item.salary }}</td>
        <td><a @click="remove(index)" href="">Delete</a></td>
    </tr>

    </table>
    </div>
    

</div>
</template>

<script>
 export default {
 data () {
 return {
    name:"",
    email:"",
    salary:"",
    person:[
        {name:"Tom",email:"tom@tom.com",salary:5000},
        {name:"Jerry",email:"jerry@sohu.com",salary:8000},
        {name:"Bob",email:"bob@tom.com",salary:10000}
]
  }
 },
 methods:{
    remove(index){
        this.person.splice(index,1);
    },
    submit(){
        var data = {name:this.name,email:this.email,salary:this.salary}
        this.person.push(data)
        console.log(data)
    }
 }
}

</script>
<style scoped>
table{
    border: 1px solid #000;
    border-collapse:collapse;
    width: 400px;
}
td{
    width: 50px;
    border: 1px solid #000;
    text-align: center;
    font-weight: 700;
}
th{
    width: 50px;
    border: 1px solid #000;
    text-align: center;
    font-weight: 900;
}
#name{
    margin-right: 5px;
}
#email{
    margin-right: 5px;
    margin-left: 10px;
}
#salary{
    margin-right: 5px;
    margin-left: 10px;
}
#first{
    display: flex;
}
#add{
    margin-left: 260px;
    margin-bottom: 20px;
}
#submit{
    margin-left: 260px;
    margin-top: 20px;
    margin-bottom: 20px;
}
#table{
    margin-left: 120px;
    margin-top: 50px;
    margin-bottom: 10px;
}
</style>

此题的数据是前端列表写死的数据,没有数据库存储,故每次重进仍然是那些数据,但是每个操作仍然是可以执行的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
搭建 Vue 开发环境步骤: 1. 安装 Node.js 首先需要安装 Node.js,它是一个基于 Chrome V8 引擎的 JavaScript 运行环境。可以在 Node.js 的官网下载最新版本的安装包并进行安装。 2. 安装 Vue CLI Vue CLI 是 Vue.js 官方提供的一个脚手架工具,可以快速搭建 Vue.js 项目的基础结构。可以使用以下命令进行安装: ``` npm install -g @vue/cli ``` 3. 创建项目 使用 Vue CLI 可以快速创建一个 Vue.js 项目。可以使用以下命令创建一个新的项目: ``` vue create my-project ``` 其中 `my-project` 为项目名称,可以根据自己的需要进行修改。 4. 启动项目 创建完项目后,可以使用以下命令进入项目目录并启动项目: ``` cd my-project npm run serve ``` 以上就是搭建 Vue 开发环境的基本步骤。下面是基于 Vue 组件开发 Web 前端应用程序的实验总结: 基于 Vue 组件开发 Web 前端应用程序实验总结: 1. 组件的注册 在 Vue 中,可以通过 `Vue.component` 方法来注册一个组件。在注册组件时,需要指定组件的名称和组件的选项。例如: ``` Vue.component('my-component', { // 组件选项 }) ``` 2. 组件的使用 在使用组件时,只需要在模板中使用组件的名称即可。例如: ``` <my-component></my-component> ``` 3. 组件的数据传递 在 Vue 中,可以通过 `props` 选项来定义组件的属性。在使用组件时,可以通过属性的方式向组件传递数据。例如: ``` Vue.component('my-component', { props: ['message'], template: '<div>{{ message }}</div>' }) <my-component message="Hello"></my-component> ``` 4. 组件的事件 在组件中,可以通过 `$emit` 方法触发一个事件。在使用组件时,可以通过 `v-on` 指令监听组件的事件。例如: ``` Vue.component('my-component', { template: '<button @click="$emit(\'my-event\')">Click me</button>' }) <my-component @my-event="handleClick"></my-component> ``` 5. 组件的插槽 在 Vue 中,可以通过插槽来定义组件的内容。在组件中,可以使用 `slot` 元素来定义插槽。在使用组件时,可以在组件的标签中添加内容,这些内容将会替换掉组件中的插槽。例如: ``` Vue.component('my-component', { template: '<div><slot></slot></div>' }) <my-component>Some content</my-component> ``` 以上就是基于 Vue 组件开发 Web 前端应用程序的实验总结。在实际开发中,可以根据需要选择不同的组件来构建 Web 页面,从而提高开发效率和代码的可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值