javascript - 在 Javascript 中删除带有复选框的表格行

标签 javascript html-table removechild

我的 Javascript 代码有问题。当我单击该复选框时,我可以将玩家添加到表中,也可以将其从表中删除。但是,当我接下来将某人添加到表中时,删除的行也会插入到表中。我希望你能理解我的问题是什么,并能帮助我。

$(document).ready(function()    {
    var players = ["Csabi", "Egér", "Miki", "Mazsi", "Sanyi", "Stam", "Szaki", "Tibi", "Tóni", "Zsolti"];
    var count = players.length;
    var row = "";
    var row1 = "";
    var doubles = "";
    var tr1 = "<tr class=\"name\"><td class=\"names\" colspan=\"2\">";
    var tr2 = "</td><td class=\"score\">0</td><td class=\"score\">72</td><td class=\"score1\">";
        $(document).on('click','input[type=button]',function(){
        newPlayer   =   document.getElementById("newplayer").value;
        players.push(newPlayer);
        i = count + 1;
        alert(i);
        });
//Generate players from 'players' array
    for (i = 0; i < players.length; i++)	{
        var div = document.createElement('div');
        var input   =   document.createElement('input');
        var label   =   document.createElement('label');
        input.type  =   "checkbox";
        input.value =   players[i];
        input.className =   "players";
        div.className = 'player';
        label.className =   "labelplayer";
        label.innerHTML	=	players[i];
        document.getElementsByClassName('playerarray')[0].appendChild(div);
        document.getElementsByClassName("player")[i].appendChild(input);
        document.getElementsByClassName("player")[i].appendChild(label);
//        alert("generate" + players[i]);
    };

    var jatekosok   =   [];
    $("input.players").change(function () {
        var checked =   $(this).prop("checked");
        if (checked) {
            row +=  tr1 + $(this).attr("value") + tr2;
            jatekosok.push($(this).attr("value"));
            var szam    =   jatekosok.length;
            document.getElementById("row").innerHTML	=   row;
            alert("Játékosok száma: "+szam);
            for (i = 0; i < szam; i++) {
                alert("A játékhoz hozzáadva: " + jatekosok[i]);
                document.getElementsByClassName("name")[i].id    =   jatekosok[i];                
            };
        }
        else  {   
            var removeplayer    =  $(this).attr("value");
            alert("A törölt játékos: " + removeplayer);
            var rows = document.getElementById(removeplayer);
            rows.parentNode.removeChild(rows);
            alert("Megtörtént");
            var removeplayer    =  $(this).attr("value");
            var index = jatekosok.indexOf(removeplayer);    
            alert(index);       
            if (index > -1) {
                jatekosok.splice(index, 1);
                var szam    =   jatekosok.length;         
                for (i = 0; i < szam; i++) {
                    alert("A játékhoz hozzáadva: " + jatekosok[i]);
                    document.getElementsByClassName("name")[i].id    =   jatekosok[i];
                    alert(i);
                };
            };  
       }
    });
    $(".double").change(function () {
        if ($(this).prop("checked")) {
            doubles += $(this).attr("value");
            document.getElementById("footer").innerHTML = doubles;
        }
    });
    
//Dartboard events    
    $("#dartboard #areas g").children().hover(
            function () {
                $(this).css("opacity", "0.6");
            },
            function () {
                $(this).css("opacity", "1");
            }
    );
    $("#dartboard #areas g").children().click(function () {
        alert($(this).attr("id"));
    });
    $(document).ready(function () {
        $("#azs").click(function () {
            alert("0");
        });
    });
    });
fieldset    {
    width: 500px;
}
div.player    {
    color:blue;
    text-align:left;
    width: 98px;
    border:1px solid black;
    float:left;
}
input.players   {
    
}
input#azs	{
    position:relative;
    top:485px;
    right:515px;
}
input#undo	{
    position:relative;
    top:485px;
    right:165px;
}
iframe  {
    border:none;
    width:521px;
    height:516px;
}
iframe#dartboard	{
    background-color:black;
    border:1px solid black;
    float:left;
}
svg#selecctor	{
    position:relative;
    top:-194px;
    left:318px;
}
div#table	{
    position:absolute;
    left:535px;
    top:16px;
}
table	{
    border-spacing:0px;
}
td	{
    border: 1px solid #ecefea;
    border-spacing: 0px;
}
tr	{
    height:34px;
}
tr.name	{
    font-size:23px;
}
td.header	{
    background-color:white;
    box-shadow:0px -6px 14px 13px black inset;
    color:white;
    font-size:17px;
    width:350px;
    padding-left:6px;
}
td.scoreheader	{
    width:120px;
    visibility:hidden;
}
td.name{
    background-color:white;
    padding-left:6px;
    width:100px;
}
td.score	{
    text-align:center;
    width:60px;
    box-shadow:0px -6px 24px 8px red inset;
    color:white;
    background-color:white;
}
td.score1	{
    border:none;
    width:33px;
    text-align:center;
    box-shadow:0px -6px 16px 8px green inset;
    font-size:19px;
    color:white;
    background-color:white;
}
table	{
    font-family:arial;
    font-weight:bold;
    width:420px;
    position:relative;
    left:0px;
    top:0px;
}
table#row   {
    width:348px;
}
<!DOCTYPE html>
<html>
<head>
    <title>Borvirág Darts</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" type="text/css" href="style.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script type="text/javascript" src="js.js"></script>

</head>
<body>
    <fieldset>
        <legend>Játék beállítása</legend>
        <form>
            <div class="playerarray"></div>
            <div style="clear:both"></div>
            Új játékos:<input id="newplayer" type="text" name="player" value="">
            <input type="button" name="newPlayer" value="Hozzáad"/><br>
            <input class="double" type="checkbox" name="double" value="DoubleIn">Double In<br>
            <input class="double" type="checkbox" name="double" value="DoubleOut">Double Out<br>
            <input class="game" type="radio" name="game" value="301">301<br>
            <input class="game" type="radio" name="game" value="501">501<br>
            <input class="game" type="radio" name="game" value="Cricket">Cricket<br>
            <input class="game" type="button" name="Submit" value="Game On" />
        </form>
    </fieldset>
    <div id="table">
        <table>
            <tr><td class="header" colspan="5">A csoport - 1. forduló <span> DOBÁS </span><span> PONT</span></td><td colspan="3" class="scoreheader"></td></tr>
        </table>
        <table id="row"></table>
        <table id="myTable">
            <tr><td class="header" colspan="5"><span id="DI"></span></td><td colspan="3" class="scoreheader"></td></tr>
        </table>
</div>
        <div id="demo"></div>
</body>
</html>

最佳答案

看起来就像您删除 player 时一样,您不会将其从玩家数组中删除,而只是删除物理行

但是,当您添加player时您通过推送来使用玩家数组(其中仍然包含所有玩家,包括已删除的玩家)。

关于javascript - 在 Javascript 中删除带有复选框的表格行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959861/

相关文章:

javascript - Internet Explorer 9 中的类型不匹配错误 : adding a &lt;title&gt; to inline SVG

javascript - HTML <脚本语言 ="$var",接受什么 $var?

php - 使用表将 php 中的数据与 MySQL 中的数据按日期分开

python libXML2 删除项目

c# - 从一组相似节点中删除一个节点/元素

JavaScript 错误 : Uncaught TypeError: Cannot set property 'value' of null

javascript - 如何使数据模式在 setTimeout 函数 JS 中工作

html - 无法删除表格中的空格和背景色

html - Div 中的表头组和表脚组

javascript - 如何在纯 Javascript 中删除和隐藏 HTML 元素?