用于删除不能正常工作的表的行的代码Javascript / HTML

时间:2017-06-05 23:18:46

标签: javascript html

我遇到以下代码问题。我正在尝试从表中删除行,如果该行不包含td中的肉。为了澄清,当调用该函数时,它接收2.(这是在表中可以找到肉字的地方) 有些行不包含单词meat,x = rows [i] .getElementsByTagName(“td”)[a];字肉可以在行的[a]中找到。我认为问题出在x.innerHTML上,因为我认为它不会返回与b进行比较的值。 任何帮助或线索都表示赞赏。现在,当单击按钮调用该功能时,没有任何反应。

function clearTable(a) {
            var table, rows, switching, i, x, c, shouldSwitch;
            table = document.getElementById("Invtable");
            switching = true;
            var b = "meat";

            while (switching){

                switching = false;
                rows = table.getElementsByTagName("tr");

                for (i = 0; i < (rows.length); i++) {
                    shouldSwitch = false;
                    x = rows[i].getElementsByTagName("td")[a];

                    if(x.innerHTML.toLowerCase() !=  b){


                        shouldSwitch= true;
                        break;
                    }
                }
                if (shouldSwitch) {
                    table.deleteRow(i);
                    switching = true;
                }
            }
        }

 var table = "<tr>";
for (var i = 0; i < array.length; i++) {
    table += "<tr>";
    for (var j = 0; j < array[i].length; j++) {
        if (j == 6) {
            table += "<td> <img src='CSV_Photos/" + array[i][j] + "' style ='width:250px;height:250px'>" + "<br>" //every 6th column is a picture 
            + "<center> " + '<button id="btn" onClick="clickMe(\''+ array[i][1] + ',' + array[i][5] + '\')"> Buy / Add To Cart </button> </td>' + "</center>"; //button onclick takes (name+price)
        } else {
            table += "<td>" + array[i][j] + "</td>";
        }
    }
  table += "</tr>";
}

编辑:从var表开始,这就是函数在javascript中创建表的方式。

html中的表格代码如下所示:

<tr><td>1000</td><td>Chicken</td><td>Meat</td><td>Perfect</td><td>Yes</td><td>$2.99</td><td>image</td> </tr>

1 个答案:

答案 0 :(得分:2)

问题是您将错误的列号作为参数传递。每行只有两个td,索引从0开始。因此,您必须将1作为参数传递:clearTable(1)

我创建了一个简单的表,因此您可以看到您的函数使用正确的参数。

修改

我重新创建了我的表有6列,我创建了一个运行onClick函数的按钮。

   
var table = '<table id="Invtable"><tr><td>Food</td><td>chicken</td><td>Veggies</td><td>Ceral</td><td>Soda</td><td>Water</td></tr><tr><td>Food</td><td>water</td><td>Soda</td><td>Meat</td><td>Water</td><td>Ceral</td></tr><tr><td>Third-Food</td><td>Meat</td><td>Chicken</td><td>Ceral</td><td>Water</td><td>Soda</td></tr></table>';
var btn = '<button onClick="clearTable(1)">Meat</button>';
document.body.innerHTML = table + btn;

//clearTable(1);

function clearTable(a) {
            var table, rows, switching, i, x, c, shouldSwitch;
            table = document.getElementById("Invtable");
            switching = true;
            var b = "meat";

            while (switching){

                switching = false;
                rows = table.getElementsByTagName("tr");
								console.log(rows);
                for (i = 0; i < (rows.length); i++) {
                    shouldSwitch = false;
                    x = rows[i].getElementsByTagName("td")[a];

                    if(x.innerHTML.toLowerCase() !=  b){


                        shouldSwitch= true;
                        break;
                    }
                }
                if (shouldSwitch) {
                    table.deleteRow(i);
                    switching = true;
                }
            }
        }