VUE留言板

效果预览图

完整代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>作业</title>
    <style>
        body{
            background: #ecdada;
        }
        *{
            margin: 0;
            padding: 0;
        }
        #app{
            width: 1000px;
            height: 100%;
            margin: 10px auto;
        }
        h2{
            text-align: center;
            margin-top: 10px;
        }
        .wp{
            width: 960px;
            height: 250px;
            background: pink;
            overflow: hidden;
            border-radius: 10px;
            padding: 20px;
        }
        textarea{
            display: block;
            margin: 5px auto;
            border-radius: 10px;
            padding: 10px;
            resize: none;
        }
        .wp button{
            display: block;
            width: 60px;
            height: 40px;
            background: #99ead6;
            margin-left: auto;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
        input{
            width: 200px;
            height: 30px;
            margin-left: 5px;
            padding-left: 10px;
            border-radius: 5px;
        }
        .pl{
            width: 1000px;
            height: 180px;
            background: #fff;
            overflow: hidden;
            border-radius: 10px;
            margin-top: 20px;
        }
        span{
            width: 980px;
            height: 40px;
            display: block;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            margin-left: 10px;
        }
        p{
            margin: 0 0 10px 10px;
        }
        h3{
            margin: 10px;
        }
        button{
            display: inline-block;
            width: 60px;
            height: 40px;
            background: #99ead6;
            border: none;
            border-radius: 5px;
            margin-top: 10px;
            margin-left: 20px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div id="app">
    <h2>留言板</h2>
    <div class="wp">
         <input type="text" placeholder="给自己定义一个身份吧(默认匿名)" v-model="val">
        <textarea class="area" rows="10" cols="130" placeholder="有什么新鲜事想告诉大家" v-model="val2"></textarea>
        <button v-if="fl==1" @click="add">发布</button>
        <button  v-else-if="fl==2" @click="add2(jk)">提交修改</button>
    </div>
    <div class="pl" v-for="(item,index) in arr">
     <h3>{{arr[index].name}}</h3>
     <p>{{arr[index].times}}</p>
     <span>{{arr[index].cont}}</span>
     <button @click="sc(index)">删除</button>
     <button @click="xg(index)">修改</button>
    
    </div>
    
    </div>
</body>
</html>
<script type="module">
    import { createApp } from './js/vue.esm-browser.js';
    createApp({
         data() {
            return {
                arr:[
                    {name:'小姚学前端',times:'时间',cont:'学习111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,好好学习,天天向上'},
                ],
                val:'',
                val2:'',
                fl:1,
                jk:-1,
            }
         },
         methods:{
            add(){
                let nn = new Date().toLocaleString()
                if (this.val2=='') {
                    alert('内容不能为空')
                }else if (this.val2!='') {
                    let obj={
                    name:this.val==''? '来自匿名':this.val,
                    times:nn,
                    cont:this.val2
                }
                this.arr.unshift(obj)
                this.val2=''
                this.val=''
                this.fl=1
                }
                
            },
            add2(jk){
                let nn = new Date().toLocaleString()
                if (this.val2=='') {
                    alert('内容不能为空')
                }else if (this.val2!='') {
                    let obj={
                    name:this.val==''? '来自匿名':this.val,
                    times:nn+'修改',
                    cont:this.val2
                }
                this.arr[jk]=obj
                this.val2=''
                this.val=''
                this.fl=1
                }
            },
            sc(index){
                let userResponse = window.confirm("确定要删除留言吗");
            if (userResponse) {
                this.arr.splice(index,1)
            } else {
              
            }
            },
            xg(index){
                this.val2=this.arr[index].cont;
                this.val=this.arr[index].name
                this.fl=2
                this.jk=index
            }
         }
    }).mount('#app')
</script>
相关推荐
浩星13 分钟前
electron系列1:Electron不是玩具,为什么桌面应用需要它?
前端·javascript·electron
_院长大人_1 小时前
Vue + ECharts 实现价格趋势分析图
前端·vue.js·echarts
疯笔码良1 小时前
【Vue】自适应布局
javascript·vue.js·css3
浩星1 小时前
electron系列2:搭建专业Electron开发环境
javascript·typescript·electron
酒鼎2 小时前
学习笔记(12-02)事件循环 - 实战案例 —⭐
前端·javascript
小恰学逆向2 小时前
【爬虫JS逆向之旅】某球网参数“md5__1038”逆向
javascript·爬虫
竹林8182 小时前
从“连接失败”到丝滑登录:我用 ethers.js v6 搞定 MetaMask 钱包连接的全过程
前端·javascript
三原3 小时前
超级好用的三原后台管理v1.0.0发布🎉(Vue3 + Ant Design Vue + Java Spring Boot )附源码
java·vue.js·开源
前端那点事3 小时前
前端必看!JS高频实用案例(单行代码+实战场景+十大排序)
javascript
之歆3 小时前
RBAC权限模型设计与实现深度解析
vue.js