Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
Javascript 为什么CSS选择器是';表tr:not(tr:n个孩子(偶数))和#x27;抛出一个打字错误?_Javascript_Css Selectors - Fatal编程技术网

Javascript 为什么CSS选择器是';表tr:not(tr:n个孩子(偶数))和#x27;抛出一个打字错误?

Javascript 为什么CSS选择器是';表tr:not(tr:n个孩子(偶数))和#x27;抛出一个打字错误?,javascript,css-selectors,Javascript,Css Selectors,此选择器为什么工作: document.querySelectorAll('table tr:not(:nth-child(even))'); 虽然此选择器没有(抛出类型错误): var查询=(选择器)=>{ 返回单据.查询选择器all(选择器); }; 试一试{ var select_a='表tr:not(:n个子项(偶数)); var select_b='表tr:not(tr:n个子项(偶数))'; 查询(选择a).forEach((节点)=>{ node.style.color='re

此选择器为什么工作:

document.querySelectorAll('table tr:not(:nth-child(even))');
虽然此选择器没有(抛出类型错误):

var查询=(选择器)=>{
返回单据.查询选择器all(选择器);
};
试一试{
var select_a='表tr:not(:n个子项(偶数));
var select_b='表tr:not(tr:n个子项(偶数))';
查询(选择a).forEach((节点)=>{
node.style.color='red';
});
查询(选择b).forEach((节点)=>{
node.style.color='blue';
});
}捕获(e){
查询('div:nth child(3)')[0]。textContent=e.toString();
}
var查询=(选择器)=>{
返回单据.查询选择器all(选择器);
};
试一试{
var select_a='表tr:not(:n个子项(偶数));
var select_b='表tr:not(tr:n个子项(偶数))';
查询(选择a).forEach((节点)=>{
node.style.color='red';
});
查询(选择b).forEach((节点)=>{
node.style.color='blue';
});
}捕获(e){
查询('div:nth child(3)')[0]。textContent=e.toString();
}

第1行名字
第1行姓氏
第1行电子邮件
第2行名字
第2行姓氏
第2行电子邮件
第3行名字
第3行姓氏
第3行电子邮件
第4行名字
第4行姓氏
第4行电子邮件
第5行名字
第5行姓氏
第5行电子邮件
为什么选择a工作而不选择b?
虽然此选择器没有(抛出类型错误):

:not()
只接受一个“简单选择器”,而
tr:nth child(偶数)
不是一个

:

简单选择器可以是类型选择器、通用选择器、属性选择器、类选择器、ID选择器或伪类

两者都是这里的重要关键词。只允许这些选择器类型中的一种,不允许它们的组合

虽然此选择器没有(抛出类型错误):

:not()
只接受一个“简单选择器”,而
tr:nth child(偶数)
不是一个

:

简单选择器可以是类型选择器、通用选择器、属性选择器、类选择器、ID选择器或伪类


两者都是这里的重要关键词。只允许这些选择器类型中的一种,而不允许它们的组合。

为什么它可以工作呢?:-)因为
:not()
只接受一个“简单选择器”,而
tr:n子项(偶数)
不是一个。“简单选择器可以是类型选择器、通用选择器、属性选择器、类选择器、ID选择器或伪类。”我认为这是因为CSS选择器级别3语法将
:not()
子句中的选择器限制为
简单选择器
,它可以是“类型”选择器(如
tr
)或“子类”选择器。根据这条规则(这让我有点困惑),同时拥有
tr
:next-child()
是错误的,因为两者都有。我认为这是一个有趣的问题,因为从错误消息中根本看不出问题是什么。另外,我认为选择器级别4的语法放松了规则,允许使用“复合”选择器。@Pointy是的,没错,选择器级别4取消了限制,而支持选择器列表。(“简单/复合/复杂选择器列表是简单、复合或复杂选择器的逗号分隔列表。当类型不重要或在周围的散文中指定时,这也被称为选择器列表”)为什么它可以工作因为
:not()
只接受一个“简单选择器”,而
tr:n子项(偶数)
不是一个。“简单选择器可以是类型选择器、通用选择器、属性选择器、类选择器、ID选择器或伪类。”我认为这是因为CSS选择器级别3语法将
:not()
子句中的选择器限制为
简单选择器
,它可以是“类型”选择器(如
tr
)或“子类”选择器。根据这条规则(这让我有点困惑),同时拥有
tr
:next-child()
是错误的,因为两者都有。我认为这是一个有趣的问题,因为从错误消息中根本看不出问题是什么。另外,我认为选择器级别4的语法放松了规则,允许使用“复合”选择器。@Pointy是的,没错,选择器级别4取消了限制,而支持选择器列表。(“简单/复合/复合选择器列表是简单、复合或复合选择器的逗号分隔列表。当类型不重要或在周围的散文中指定时,这也称为选择器列表”)
document.querySelectorAll('table tr:not(tr:nth-child(even))');
document.querySelectorAll('table tr:not(tr:nth-child(even))');