CSS:javascript中的最后一个子选择器?
我希望在每一行中选择最后一个CSS:javascript中的最后一个子选择器?,javascript,Javascript,我希望在每一行中选择最后一个td,并立即使用此css选择器。表td:last child,但它在IE中不起作用,所以我可以通过javascript(没有任何框架)为IE选择任何方法吗?应用CSS样式。您是否可以应用CSS样式还没有定论。当然可以,因为Javascript框架可以做到这一点 当您只需在JS库上添加一个小的依赖项时,您是否应该花时间重新发明轮子,这应该是一个问题。要在JavaScript中实现这一点,您需要以下内容: var tableRows = document.getEleme
td
,并立即使用此css选择器。表td:last child
,但它在IE中不起作用,所以我可以通过javascript(没有任何框架)为IE选择任何方法吗?应用CSS样式。您是否可以应用CSS样式还没有定论。当然可以,因为Javascript框架可以做到这一点
当您只需在JS库上添加一个小的依赖项时,您是否应该花时间重新发明轮子,这应该是一个问题。要在JavaScript中实现这一点,您需要以下内容:
var tableRows = document.getElementById('tableid').childNodes
var tableCells = tableRows[tableRows.length - 1].childNodes;
var lastCell = tableCells[tableCells.length - 1];
这假设表的格式在这些标记之间没有任何内容。没有人这样
或者,您可以简单地使用getElementByTagName('td')
并获取返回数组的最后一个元素。这样做的缺点是,它不适用于包含多个表的页面。var rows=document.getElementById('tester').rows;
var rows = document.getElementById('tester').rows;
for(var i = 0, len = rows.length; i < len; i++) {
rows[ i ].lastChild.style.background = 'orange';
}
对于(变量i=0,len=rows.length;i
示例:
编辑:如果要在所有浏览器中运行此操作,则执行此操作可能更安全:
var rows = document.getElementById('tester').rows;
for(var i = 0, len = rows.length; i < len; i++) {
rows[ i ].cells[ rows[ i ].cells.length - 1 ].style.background = 'orange';
}
var rows=document.getElementById('tester').rows;
对于(变量i=0,len=rows.length;i
示例:
这是因为如果最后一个
和结束
之间有空格,某些浏览器将插入文本节点。因此,lastChild
不起作用。在Javascript中,您可以在任何DOM对象上引用.lastChild
,但您必须首先获取元素,因此如果没有jQuery或类似的工具,这就不像听起来那么容易了
显而易见的答案是“使用JQuery”。您已经针对这一点(即“没有任何框架”)进行了详细说明,但这是迄今为止最明显的解决方案
另一个解决方案是(以及相关的IE8.js和IE9.js),它是一个Javascript包含,试图修补IE的旧版本,使其与标准CSS更兼容,等等。我相信它修复了:last child
选择器。但同样,它是第三方库,因此您可能不想使用它
当然,您可以只向希望应用最后一个子样式的元素添加一个附加类,然后在CSS中引用该类而不是最后一个子样式。这并不理想,因为
最后一个孩子
的目标是避免您必须这样做,但它确实保证了您的兼容性。1)IE sux。2) 使用jqueryYes——您可以重新实现支持这种选择类型的每个框架所做的事情,以选择最后一个子元素。做这件事可能不需要太多的代码,但真的,为什么?只要选择一个好的框架就可以了。last child
和first child
都应该适用于IE7和更高版本。在我看来,如果您只需要功能的一小部分,就不应该包含完整的框架。这也是一个注释,而不是答案。不是真的。有效的答案有时确实包括“不要重新发明轮子,你太傻了。”在我看来,仅将框架用作选择器是毫无意义的。如果缺少框架,浏览器通常会插入一个
。无论如何,这只会影响最后一行的最后一个单元格。这就是为什么我说假设没有tbody。无论如何,将代码调整为不同的HTML结构并不是一个巨大的逻辑飞跃。我的观点是,你不能假设没有
,因为浏览器可能会为你插入它。