2010-04-21 43 views
1

我有下面的代码删除一个元素:如何在没有ID

<%-- other tags --%> 
<table> 
    <tr width="100%"> 
    <td width="130" /> 
    <td id="BottomCell" width="100%" /> 
    </tr> 
    <tr> 
    <td/> 
    <td/> 
    </tr> 
</table> 
<%-- other tags --%> 

有可能是在页面上多个表。我希望td之前“BottomCell”被删除(或隐藏)页面加载。我如何使用JavaScript或CSS来做到这一点?

谢谢。

顺便说一句,我正在开发一个Sharepoint WebPart,将被放到一个页面上。该页面上,我没有直接控制。但是WebPart只要在页面上显示就应该删除它。

+1

我们需要更多信息。你想从哪个上下文中删除?有多种方式可以做到这一点。 – Matt 2010-04-21 18:26:05

+1

另外,你使用jQuery,原型或任何其他js库? – 2010-04-21 18:29:17

+1

如果您删除第一个'​​',您的行将有不同的列数......如果没有'colspan'属性,将不再有效html – knittl 2010-04-21 19:29:10

回答

4

哇,使用框架后要回到基础是艰苦的工作。

var element = document.getElementById('BottomCell').previousSibling; 
var parent = element.parentNode; 
parent.removeChild(element); 
+0

如果是这样,那么你并没有首先学习基础知识。 ;) – Bob 2010-04-21 19:30:13

+2

不,这只是该死的打字。 – 2010-04-21 19:46:45

+0

我应用了你的方法,它完美的工作。我使用window.onload事件的代码。看起来tr在页面被渲染后被删除。所以我看到一些锯齿状的动作。任何想法如何解决这个问题? – Shuo 2010-04-21 22:38:07

4

在jQuery中:

$('#BottomCell').prev().detach(); 
+0

还没有尝试过jQuery,但我认为这应该起作用。谢谢! :) – Shuo 2010-04-21 19:58:06

1

@diodeus如果只有2个数据单元,这将是可以接受的,但是如果你要删除的第一个数据单元无论然而,许多细胞位于该行中,你可以这样做

var el = document.getElementById('BottomCell'); 
el.removeChild(el.parentNode.firstChild); 
1

好吧,假设你只有一个表,那么你可以做这样的事情(在JavaScript):

var firstCell = document.getElementsByTagName('tr')[0].getElementsByTagName('td')[0]; 
firstCell.parentNode.removeChild(firstCell); 

它会得到第一行的第一个单元格,在整个DOM树,和r去除那个细胞。

+0

,则无法确定要获取哪个元素,尽管它不一定是文档中的第一个tr。 – Shuo 2010-04-21 20:34:58

1

在jQuery中,我会找到父级并使用:first选择器可能