Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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
CSS:javascript中的最后一个子选择器?_Javascript - Fatal编程技术网

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结构并不是一个巨大的逻辑飞跃。我的观点是,你不能假设没有
,因为浏览器可能会为你插入它。