简体   繁体   English

删除Javascript onclick中的行

[英]Delete row in Javascript onclick

When I click remove row it should remove the entire row keeping the slot empty so that I can fill details later in that row. 当我单击“删除行”时,它应删除整行,使插槽保持空白,以便稍后在该行中填写详细信息。 I tried creating click event I don't know how to create a empty row. 我尝试创建点击事件,但我不知道如何创建一个空行。

jsfiddle 的jsfiddle

 var cell1;
 var cell2;
 var cell3;
 var cell4;

 var m = document.querySelector('#inputvechnumber');

 document.querySelector('#vech').addEventListener('click', function () {
     for (var i = 0; i < m.value; i++) {
         console.log(i);
         var numberplatefour = Math.floor(Math.random() * 8800) + 1001;
         var numberplatetwo = Math.floor(Math.random() * 90) + 10;
         var nplate = "KA" + "-" + numberplatetwo + "-" + numberplate() + "-" + numberplatefour;
         var table = document.querySelector('.table')
         var row = table.insertRow(0);

         cell1 = row.insertCell(0);
         cell2 = row.insertCell(1);
         cell3 = row.insertCell(2);
         cell4 = row.insertCell(3);

         cell1.innerHTML = nplate;
         cell2.innerHTML = carcolor();
         cell3.innerHTML = 'slot' + i;
         cell4.innerHTML = "REMOVE ROW";
     }
 })

you need a little css to make your question more clear,look at this,is this you want? 您需要一点CSS来使您的问题更清楚,看看这个,这是您想要的吗? run this demo,you will see 运行此演示,您将看到

 var cell1; var cell2; var cell3; var cell4; var m = document.querySelector('#inputvechnumber'); document.querySelector('#vech').addEventListener('click', function() { for (var i = 0; i < m.value; i++) { console.log(i); var numberplatefour = Math.floor(Math.random() * 8800) + 1001; var numberplatetwo = Math.floor(Math.random() * 90) + 10; var nplate = "KA" + "-" + numberplatetwo + "-" + numberplate() + "-" + numberplatefour; var table = document.querySelector('.table') var row = table.insertRow(0); cell1 = row.insertCell(0); cell2 = row.insertCell(1); cell3 = row.insertCell(2); cell4 = row.insertCell(3); cell1.innerHTML = nplate; cell2.innerHTML = carcolor(); cell3.innerHTML = 'slot' + i; cell4.innerHTML = "remove"; } }) /*GENERTE TWO COLOR FOR CAR*/ function carcolor() { var color = ["black", "white", "blue", "red"]; var colornum = Math.floor(Math.random() * 4); var carcolor = color[colornum]; return carcolor; } /*GENERTE TWO TEXT FOR NUMPLATE*/ function numberplate() { var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; for (var i = 0; i < 2; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; } //clear row when click remove row var table = document.getElementsByClassName('table')[0]; table.addEventListener('click', clearRow, false); function clearRow(event) { var target = event.target; if (target.cellIndex === 3) { console.log(target.parentNode.children) Array.from(target.parentNode.children).forEach(function(ele) { ele.innerHTML = ''; }); } } 
 table { height: 20px; width: 600px; } td { background: pink; height: 20px; border: 1px solid black; } 
 <input type="number" name="" id="inputvechnumber" placeholder="vehicle generate"> <button type="submit" id="vech">submit</button> <table class="table"> <thead> </thead> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> 

You can add a click event listener to the "remove" cells. 您可以将单击事件侦听器添加到“删除”单元格。

I have adapted your jsfiddle to make it work: 我调整了您的jsfiddle使其工作:

var m = document.querySelector('#inputvechnumber');

document.querySelector('#vech').addEventListener('click', function () {

    for (var i = 0; i < m.value; i++) {
        console.log(i);
        var numberplatefour = Math.floor(Math.random() * 8800) + 1001;

        var numberplatetwo = Math.floor(Math.random() * 90) + 10;


        var nplate = "KA" + "-" + numberplatetwo + "-" + numberplate() + "-" + numberplatefour;

        var table = document.querySelector('.table')
        var row = table.insertRow(0);
        var cell1 = row.insertCell(0);
        var cell2 = row.insertCell(1);
        var cell3 = row.insertCell(2);
        var cell4 = row.insertCell(3);

        cell1.innerHTML = nplate;
        cell2.innerHTML = carcolor();
        cell3.innerHTML = 'slot' + i;
        cell4.innerHTML = "remove";

        cell4.addEventListener('click', function () {
            [cell1, cell2, cell3].forEach(cell => cell.innerHTML = '');
        });

    }

})

I moved the cell (cell1, cell2, ...) variable declarations into the for loop scope otherwise the reference would be overridden and the clicking the remove button would always remove the latest added row. 我将单元格(cell1,cell2,...)的变量声明移到了for循环范围内,否则该引用将被覆盖并且单击remove按钮将始终删除最新添加的行。

If you want to delete the row ( not empty the values! ) consider editing code above adding a few lines, as follows: 如果要删除行( 不清空值! ),请考虑在上面添加几行的编辑代码,如下所示:

document.querySelector('#vech').addEventListener('click', function ()
    {

        for (var i = 0; i < m.value; i++)
        {   



            console.log(i);
            var numberplatefour = Math.floor(Math.random() * 8800) + 1001;

            var numberplatetwo = Math.floor(Math.random() * 90) + 10;


            var nplate = "KA" + "-" + numberplatetwo + "-" + numberplate() + "-" + numberplatefour;

                         var table = document.querySelector('.table')
                        var row = table.insertRow(0);
                  cell1 = row.insertCell(0);
                 cell2 = row.insertCell(1);
                 cell3 = row.insertCell(2);
                 cell4 = row.insertCell(3);
            cell1.innerHTML = nplate;
            cell2.innerHTML = carcolor();
            cell3.innerHTML = 'slot'+i;
            cell4.innerHTML = "remove";


      /**********************************************
       *  Add a class to identify "Remove" buttons  *
       **********************************************/
      cell4.classList.add('remove');

        }

    /*******************************************************
     *  Bind click event and delete the corresponding row  *
     *******************************************************/ 
  var removeNodes = document.querySelectorAll('td.remove');
  removeNodes.forEach(node => {
    node.addEventListener('click', (event) => {
      var nodeElement = event.target;
      var rowToDelete = nodeElement.parentNode;
      rowToDelete.parentNode.removeChild(rowToDelete);
    })
  })

    })

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM