JS 留言板

 <!-- 
         1-基本结构
         2- js逻辑
            分析有啥功能,就知道从哪下手  

            1-点击发布的按钮的时候,
            2-根据输入框的内容创建li标签,li里面还要有内容 p,button
            3-删除按钮 添加点击事件,点击的时候删除 按钮所在的li

      -->
      <input type="text" class="ipt">
      <input type="button" value="留言" class="sendBtn">
      <ul class="list">
          <li>
              <p>厉害 </p> 
              <button class="deleteBtn">删除</button>
          </li>
      </ul>
    <script>
        //1-
        let sendBtn = document.querySelector('.sendBtn');
        let ipt = document.querySelector('.ipt')
        let list = document.querySelector('.list')

        sendBtn.onclick = function(){
            console.log('点了发布')
            //2-创建li
            let newLi = document.createElement('li');

            // 创建p
            let oP = document.createElement('p');
            oP.innerHTML = ipt.value;
            newLi.appendChild(oP)

            // li添加到 list 里面
            list.appendChild(newLi)

            // 输入框清空
            ipt.value = '';

            // 创建删除按钮
            let deleteBtn = document.createElement('button');
            deleteBtn.innerHTML = '删除'
            deleteBtn.className='deleteBtn'
            newLi.appendChild(deleteBtn)


            deleteBtn.onclick = function(){
                this.parentNode.remove()
            }

            // let delBtns = document.querySelectorAll('.deleteBtn');
            // console.log(delBtns)
            // for(let i=0;i<delBtns.length;i++){
            //     delBtns[i].onclick = function(){
            //         console.log(this.parentNode)
            //         this.parentNode.remove()
                    
            //     }
            // }

        }
        //针对页面加载完毕,已经有点删除按钮
        let delBtns = document.querySelectorAll('.deleteBtn');
        console.log(delBtns)
        for(let i=0;i<delBtns.length;i++){
            delBtns[i].onclick = function(){
                console.log(this.parentNode)
                this.parentNode.remove()
                
            }
        }

    </script> 
  <!-- 
         1-基本结构
         2- js逻辑
            分析有啥功能,就知道从哪下手  

            1-点击发布的按钮的时候,
            2-根据输入框的内容创建li标签,li里面还要有内容 p,button
            3-删除按钮 添加点击事件,点击的时候删除 按钮所在的li

      -->
      <input type="text" class="ipt">
      <input type="button" value="留言" class="sendBtn">
      <ul class="list">
          <li>
              <p>厉害 </p> 
              <button class="deleteBtn">删除</button>
          </li>

          

      </ul>
    <script>
        //1-
        let sendBtn = document.querySelector('.sendBtn');
        let ipt = document.querySelector('.ipt')
        let list = document.querySelector('.list')

        sendBtn.onclick = function(){
            console.log('点了发布')
            // 拼字符串
            // 模板
            let str = `
            <li>
                <p>${ipt.value} </p> 
                <button class="deleteBtn">删除</button>
             </li>
             `
             list.innerHTML = list.innerHTML + str;

            //针对页面加载完毕,已经有点删除按钮
            let delBtns = document.querySelectorAll('.deleteBtn');
            console.log(delBtns)
            for(let i=0;i<delBtns.length;i++){
                delBtns[i].onclick = function(){
                    console.log(this.parentNode)//点击id按钮对应的li
                    this.parentNode.remove()
                    
                }
            }

           

        }
        //针对页面加载完毕,已经有点删除按钮
        let delBtns = document.querySelectorAll('.deleteBtn');
        console.log(delBtns)
        for(let i=0;i<delBtns.length;i++){
            delBtns[i].onclick = function(){
                console.log(this.parentNode)
                this.parentNode.remove()
                
            }
        }

    </script> 
 <body>
     <!-- 
         1-基本结构
         2- js逻辑
            分析有啥功能,就知道从哪下手  

            1-点击发布的按钮的时候,
            2-根据输入框的内容创建li标签,li里面还要有内容 p,button
            3-删除按钮 添加点击事件,点击的时候删除 按钮所在的li

      -->
      <input type="text" class="ipt">
      <input type="button" value="留言" class="sendBtn">
      <ul class="list">
          

          

      </ul>
    <script>

        //1-
        let sendBtn = document.querySelector('.sendBtn');
        let ipt = document.querySelector('.ipt')
        let list = document.querySelector('.list')

        //1-数据  转为 页面的html结构      查
        //2- 留言的时候 更改数据    数组中添加对象,render页面   增
        //3- 删除留言  数组中删除对象,render页面      删

        let arr = [
            {
                title:'今天天气很好!',
                date:'2020-06-07T19:18:06.124Z'

            },//一个对象就是一条留言
            {
                title:'今天的真热!',
                date:'2020-06-06T19:18:06.124Z'

            }

        ]
        // 数据  转为 页面的html结构
        // 循环遍历 arr 数组, 根据数组中内容  去拼字符串
        // let html = '';
        // for(let i=0;i<arr.length;i++){
        //     let obj = arr[i]
        //     console.log(obj)
        //     //每个留言的obj 都要 产生一个 li
        //     html += `
        //         <li>${obj.title}</li>
        //     `
        // }
        // console.log(html)
        // //将拼好的字符串放在 ul里面
        // list.innerHTML = html
        render()

        //渲染 -跟数据转为页面
        // 封装函数 一段代码要多次调用或者 将大段的代码 拆成几个函数
        function render(){
            let html = '';
            for(let i=0;i<arr.length;i++){
                let obj = arr[i]
                console.log(obj)
                //每个留言的obj 都要 产生一个 li
                html += `
                    <li>
                        ${obj.title}
                        <button class="deleteBtn">删除</button>
                        ${obj.date}
                    </li>
                    
                `
            }
            console.log(html)
            //将拼好的字符串放在 ul里面
            list.innerHTML = html

            //3-删除留言   给删除按钮加事件
            let delBtns = document.querySelectorAll('.deleteBtn');
            console.log(delBtns)
            for(let i=0;i<delBtns.length;i++){
                delBtns[i].onclick = function(){
                    console.log(this.parentNode)
                    // this.parentNode.remove()
                    console.log(arr)


                    // 删除数组中 留言对应的对象
                    console.log(i)
                    arr.splice(i,1)
                    console.log(arr)

                    // 渲染页面
                    render()
                    
                }
            }
            // {
            //     let i=0;
            //     delBtns[i].οnclick= function(){
            //         console.log(i)//0
            //     }
            
            // }
            // {
            //     let i=1;
            //     delBtns[i].οnclick= function(){
            //         console.log(i)//1
            //     }
            
            // }


        }

        sendBtn.onclick = function(){
            //2 - 留言的时候更改数据, 往数组中添加对象
            let now = new Date()
            let o = {
                title:ipt.value,
                date:now.toString()
            }
            console.log(o)
            arr.push(o)
            console.log(arr);

            //重复1   将数据转为 html结构
        //     let html = '';
        // for(let i=0;i<arr.length;i++){
        //     let obj = arr[i]
        //     console.log(obj)
        //     //每个留言的obj 都要 产生一个 li
        //     html += `
        //         <li>${obj.title}</li>
        //     `
        // }
        // console.log(html)
        // //将拼好的字符串放在 ul里面
        // list.innerHTML = html 
             render() 
        }  
    </script> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值