Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从一次单击按钮删除EJS中的数组项?_Javascript_Node.js_Button_Onclick_Ejs - Fatal编程技术网

Javascript 如何从一次单击按钮删除EJS中的数组项?

Javascript 如何从一次单击按钮删除EJS中的数组项?,javascript,node.js,button,onclick,ejs,Javascript,Node.js,Button,Onclick,Ejs,我正在创建一个待办事项列表,需要帮助在EJS中添加一个按钮,该按钮可以从数组itemArr中删除对象。我通过for循环显示我的项,它们是数组中的对象。每个对象都有名称、开始时间、结束时间和id itemArr.push({name:newItem, st:starttime, et:endtime, id:id}); 有没有办法创建一个onclick按钮,该按钮可以从数组中删除一个对象,从而将其从“待办事项”列表中删除?我可以在html中轻松删除它,但当我添加一个新项目时,数组将刷新,列表将重

我正在创建一个待办事项列表,需要帮助在EJS中添加一个按钮,该按钮可以从数组
itemArr
中删除对象。我通过for循环显示我的
  • 项,它们是数组中的对象。每个对象都有名称、开始时间、结束时间和id

    itemArr.push({name:newItem, st:starttime, et:endtime, id:id});
    
    有没有办法创建一个onclick按钮,该按钮可以从数组中删除一个对象,从而将其从“待办事项”列表中删除?我可以在html中轻松删除它,但当我添加一个新项目时,数组将刷新,列表将重新出现,因此我必须将其从数组中删除

    目前,这是我的EJS代码,其中列表由for循环生成,res.render显示itemArr绑定到ITEMARRAY的位置

    <body>
    
        <h2 style="text-decoration: underline;"> To do:</h2>
        <ol type="1">
            <% for (var i=0;i<ITEMARRAY.length;i++){ %>
                <li> <%= ITEMARRAY[i].name %> | <%= ITEMARRAY[i].st %> - <%= ITEMARRAY[i].et %> <input type="checkbox"> <button onclick="myFunction(i)" id="remove">X</button> </li> 
            <% } %>
    
        </ol>
    
    <script>
        function myFunction() {
          var x = document.getElementById("remove").parentNode.remove();
        }
    </script>
    
    
    要做:
    
    TL;博士EJS是一种服务器端渲染解决方案,因此您不能这样做


    因为EJS是一个SSR解决方案,所以所有的呈现都发生在服务器上,然后客户端收到一个HTML页面。从现在起,该页面就存在于浏览器中,要更改它,需要使用一些浏览器JS代码。

    答案是使用mongodb,然后通过按钮发出post请求

    app.get("/", function (req, res) {
    
      res.render("list", {ITEMARRAY: itemArr}); //pass an object into list.ejs with keyval pair
    
    
    });
    
    app.post("/", function(req,res){
        var newItem = req.body.newItem;
        var starttime = req.body.startTime;
        var endtime = req.body.endTime;
        var id = 0;
    
        //checking validity of range
        var start = parseInt(starttime.split(":"));
        var end = parseInt(endtime.split(":"));
    
        var difference = (end - start) / (86400000 * 7);
        if (difference < 0) {
            // throw new Error("The start time must come before the end time.");
            res.render("fail");
        }
        else
          itemArr.push({name:newItem, st:starttime, et:endtime, id:id}); //if all ok, then push to arr
          sortList(itemArr); 
          res.redirect("/");
    
    
    })