2014-08-31 81 views
1

我试图在点击一个按钮时删除一行。它工作正常,除非我在一个表内。我的JSP在表中有50行的组合,之后我们嵌套这些表。现在,我的问题是如果我想删除上一个表中的最后一行,我应该怎么做?使用JavaScript删除节点

我附上UI和调试器HTML视图的屏幕截图。任何建议都会有所帮助。

[DROW]这里是我们有一个树结构的不同行。我们需要首先爬到每一行,然后向下移动到lastChild以删除最后一行。

这是唯一可能的,如果我的previousRow包含最后一行val。我无法理解它。

function removeAnotherResponse(arg0, data, response, request){ 

// Make sure the response has everything we need 
if(arguments==null || arguments.length<4 || !request.content || request.content==null || !request.content.groupUniqueId || request.content.groupUniqueId==null){ 
    return; 
} 

// Check for true response 
if(!data || data==null || !data[0] || !data[0].removedSuccess || data[0].removedSuccess!=true){ 
    return; 
} 

var groupUniqueId=request.content.groupUniqueId; 

// Get the add another button row and add the new row before it. 
var addAnotherRow=document.getElementById("ADD_"+groupUniqueId); 
if(addAnotherRow==null) return; 

    var previousRow=document.getElementById("ADD_"+groupUniqueId).previousSibling; 
    addAnotherRow.parentNode.removeChild(previousRow); 



showOrHideAddRemoveButtons(groupUniqueId, data[0].removeButton, data[0].addButton); 
updateSectionCount(groupUniqueId, false); 
getPortCount(groupUniqueId); 

}

+0

添加代码不是截图。 – Mritunjay 2014-08-31 13:02:10

+0

@Mritunjay ..我添加了我用来删除表内行的代码。我无法移动到上面嵌套了表格的行,如调试屏幕截图所示。 – Bhaskar 2014-08-31 13:05:41

+1

'id'属性值应该是每个元素唯一的。在这里你应该使用不具有相同值的'id'类。 – GillesC 2014-08-31 13:14:16

回答

0

谢谢大家提示我改正html代码。

UI元素确实为我在其他方面造成了问题。现在,我不是创建一个新的,而是找到了处理这个问题的其他方法,而且我的HTML代码变得更简单了。 PFB脚本已经改变了。感谢所有的建议:)

if (document.getElementById("ID" + gID) != null) { 

    innerElement = document.getElementById("ID_TD_" + gID); 
    innerElement.innerHTML = innerElement.innerHTML + responseHTML; 

} else { 

    innerElement = document.createElement("td"); 
    innerElement.setAttribute("id", "ID_TD_" + gID); 

    newElement.appendChild(innerElement); 
    innerElement.innerHTML = responseHTML; 

} 
2

您发布的HTML片段似乎有一些问题(ID重复,使用<tr>作为其他<tr>父)。我仍然回答你的主要问题如何删除表格的行。您可以使用DOM table对象的deleteRow方法。 rows集合可用于访问现有行,deleteRowinsertRow允许您修改表。

+0

在这里,我想移动到那一行,就像我目前的做法一样。当我在表格中遍历时,可以使用上面的代码轻松完成此操作。但是当一个表中的所有50行都被删除,并且我想要移动到上面的行时,它又显示了一个表,我无法这样做。 – Bhaskar 2014-08-31 13:33:05

+1

@Bhaskar:对不起,但我不能完全关注你。您发布的代码片段仅使用像'parentNode'和'removeChild'这样的DOM方法,它们对于每个HTML元素都是** common **。 DOM API有一些**特定的**方法,比如'deleteRow',它允许您在使用**特定的** DOM元素(如“

”)时简化工作。你最主要的问题是:*如何删除某个特定表的最后一行?*。我建议你按ID选择表格,然后用'deleteRow'来删除你想要删除的行。 – Oleg2014-08-31 13:42:05

+0

感谢您提出改变建议。可能我会先试着修复我的jsp,如果我的问题得到解决,我会发布我的答案。 – Bhaskar 2014-09-01 12:47:01