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>
相关推荐
小飞悟6 分钟前
那些年我们忽略的高频事件,正在拖垮你的页面
javascript·设计模式·面试
中微子19 分钟前
闭包面试宝典:高频考点与实战解析
前端·javascript
G等你下课1 小时前
告别刷新就丢数据!localStorage 全面指南
前端·javascript
爱编程的喵1 小时前
JavaScript闭包实战:从类封装到防抖函数的深度解析
前端·javascript
lalalalalalalala1 小时前
开箱即用的 Vue3 无限平滑滚动组件
前端·vue.js
前端Hardy1 小时前
8个你必须掌握的「Vue」实用技巧
前端·javascript·vue.js
星月日1 小时前
深拷贝还在用lodash吗?来试试原装的structuredClone()吧!
前端·javascript
爱学习的茄子1 小时前
JavaScript闭包实战:解析节流函数的精妙实现 🚀
前端·javascript·面试
今夜星辉灿烂1 小时前
nestjs微服务-系列4
javascript·后端
吉吉安1 小时前
两张图片对比clip功能
javascript·css·css3