Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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文本框的单元格_Javascript_Html - Fatal编程技术网

如何判断一行是否包含带有javascript文本框的单元格

如何判断一行是否包含带有javascript文本框的单元格,javascript,html,Javascript,Html,我有一个从用户指定的查询到数据库的动态生成的表,我想让用户可以选择编辑生成的HTML表中的数据。当用户双击包含他们想要编辑的数据的行时,我会在它下面出现一个新行,其中有文本框供他们提交新值。现在,当用户双击两行时,两行文本框都保留在表中,我想在第二行出现之前删除第一行。我的问题是,找到包含文本框的表行有什么好处,这样我就可以使用JavaScript的deleteRow()函数了 我正在生成这样的行: function editRow(row) { var table = document

我有一个从用户指定的查询到数据库的动态生成的表,我想让用户可以选择编辑生成的HTML表中的数据。当用户双击包含他们想要编辑的数据的行时,我会在它下面出现一个新行,其中有文本框供他们提交新值。现在,当用户双击两行时,两行文本框都保留在表中,我想在第二行出现之前删除第一行。我的问题是,找到包含文本框的表行有什么好处,这样我就可以使用JavaScript的
deleteRow()
函数了

我正在生成这样的行:

function editRow(row) {
    var table = document.getElementById("data");
    var newRow = table.insertRow(row.rowIndex + 1);
    var cell;

    for (var i = 0; i < row.childNodes.length; i++) {
        cell = newRow.insertCell(i);
        textBox = document.createElement("input");
        textBox.type = "text";
        textBox.placeholder = row.childNodes[i].innerHTML;
        textBox.style.textAlign = "center";
        textBox.style.width = "90%";
        cell.appendChild(textBox);
    }
}

感谢您的帮助

我想最简单的方法是将创建的行添加到数组中。这样,您只需删除数组中的行,而不是遍历整个表。

我想最简单的方法是将创建的行添加到数组中。这样,您只需删除数组中的行,而不是遍历整个表。

您可以使用。假设
是一个DOM元素,这应该可以工作:

var textBoxes = $("input:text", row); 
你可以用。假设
是一个DOM元素,这应该可以工作:

var textBoxes = $("input:text", row); 

我最后做了以下几件事:

function editRow(row) {
    var table = document.getElementById("data");
    clearExistingTextBoxes(table);
    ...
}

function clearExistingTextBoxes(table) {
    var tBoxRow = table.getElementsByTagName("input");
    if (tBoxRow.length > 0) {
    tBoxRow = tBoxRow[0].parentNode.parentNode;
    table.deleteRow(tBoxRow.rowIndex);
    }
}

假设我一次只清理一排

我最后做了以下几件事:

function editRow(row) {
    var table = document.getElementById("data");
    clearExistingTextBoxes(table);
    ...
}

function clearExistingTextBoxes(table) {
    var tBoxRow = table.getElementsByTagName("input");
    if (tBoxRow.length > 0) {
    tBoxRow = tBoxRow[0].parentNode.parentNode;
    table.deleteRow(tBoxRow.rowIndex);
    }
}

假设我一次只清理一排

在输入框或行中添加一个特定的类,然后在这些框或行上循环?我听说IE无法通过类名找到元素,这就是为什么我没有尝试这样做的原因。你知道这是否真的是这样吗?检查一下,在输入框或行中添加一个特定的类,然后在这些框或行上循环?我听说IE不能通过类名找到元素,这就是为什么我没有尝试这样做的原因。你知道这是否真的是这样吗?请检查我是否必须全局维护该阵列?似乎有一个额外的变量来跟踪它们有点浪费。不一定,但这是最简单的方法。不用担心,如果只存储id,它实际上比其他任何东西都更方便资源。请记住,应该从数组中删除已删除的行。要为每一行生成唯一的ID,可以使用getTime()之类的方法;我必须在全球范围内维护该阵列吗?似乎有一个额外的变量来跟踪它们有点浪费。不一定,但这是最简单的方法。不用担心,如果只存储id,它实际上比其他任何东西都更方便资源。请记住,应该从数组中删除已删除的行。要为每一行生成唯一的ID,可以使用getTime()之类的方法;我希望在没有jQuery的情况下有一种可以接受的方法,但我最终可能会这样做,谢谢。我希望在没有jQuery的情况下有一种可以接受的方法,但我最终可能会这样做,谢谢。