人肉dom+ajax

一、json-server的安裝

npm install -g json-server

二、db.json

{
  "books": [
    {
      "id": 1,
      "name": "三體",
      "price": 23.5
    },
    {
      "id": 2,
      "name": "流浪地球",
      "price": 100
    },
    {
      "name": "某書",
      "price": "23.5",
      "id": 3
    },
    {
      "name": "某書",
      "price": "23.5",
      "id": 4
    },
    {
      "name": "某書",
      "price": "23.5",
      "id": 5
    },
    {
      "name": "某書",
      "price": "23.5",
      "id": 6
    },
    {
      "name": "某書",
      "price": "23.5",
      "id": 7
    },
    {
      "name": "某書",
      "price": "23.5",
      "id": 8
    },
    {
      "name": "某書",
      "price": "23.5",
      "id": 9
    }
  ]
}

三、index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #books table{
            width: 600px;
            border: 1px solid blue;
            border-collapse: collapse;
        }
        #books th,#books td{
            border: 1px solid blue;
        }
    </style>
</head>
<body>

    <form id="addbook" action="#">
        <input type="text" name="bname" value="某書">
        <input type="number" name="price" step="0.5" min="0" value="23.5">
        <button>添加</button>
    </form>
    <div id="books">

    </div>
    <script>
        let url="http://localhost:3000/books"
        let id=1;
        let data=[]
            //[{id:id++,name:'三體',price:234.50},{id:id++,name:'流浪地球',price:34.50}];
        let books=document.querySelector('#books')
        //添加表單的提交方法
        document.querySelector('#addbook').addEventListener('submit',function (event) {
            let book={name:this.bname.value,price:this.price.value};
            fetch(url,
                {
                    method:"POST",body:JSON.stringify(book),
                    headers:{"Content-Type":"application/json"}
                })
                .then(function (res) {
                    return res.json()
                })
                .then(function (book) {
                    data.push(book)
                    render()
                    event.preventDefault()
                })
        })
        function render(){
            books.innerHTML=""
            var table=document.createElement('table')
            data.forEach(function (book) {
                let tr=document.createElement('tr');
                tr.appendChild(document.createElement('td')).innerText=book.id
                tr.appendChild(document.createElement('td')).innerText=book.name
                tr.appendChild(document.createElement('td')).innerText=book.price
                //加一個(gè)button
                let btn=document.createElement("button")
                btn.innerText="刪除"
                tr.appendChild(document.createElement('td')).appendChild(btn)
                //給刪除按鈕添加事件監(jiān)聽
                btn.addEventListener('click',function () {
                    let index=data.findIndex(function (bk) {
                        return bk.id==book.id
                    })
                    data.splice(index,1)
                    render()
                })
                table.appendChild(tr)
            })
            books.appendChild(table)
        }
        window.onload=function(){
            fetch(url,{method:"GET"})
                .then(function (res) {
                    return res.json();
                })
                .then(function (books) {
                    data=books
                    render()
                })


        }
    </script>
</body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,884評(píng)論 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,894評(píng)論 1 45
  • 一、基本認(rèn)知 一個(gè)在前端本地運(yùn)行,可以存儲(chǔ)json數(shù)據(jù)的server。 二、基本使用方式(兩種) 1.全局使用 (...
    南慕瑤閱讀 46,241評(píng)論 0 25
  • 今天突然想到一個(gè)問題,如果上帝送你一樣禮物,只能在兩者當(dāng)中選一個(gè),你會(huì)選什么?一個(gè)是會(huì)游泳(達(dá)到奧運(yùn)冠軍...
    梁增伙閱讀 400評(píng)論 0 2
  • 今天戴老師給我們留的作業(yè)還是回家說三件事…(第一件事,讓我們查外國人早飯吃啥?第二件事讓我們回家編兩道數(shù)學(xué)題,因?yàn)?..
    昊昊的每一天閱讀 366評(píng)論 0 0

友情鏈接更多精彩內(nèi)容