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