querySelectorAll语法无效

bho*_*nes 2 javascript firefox css-selectors selectors-api

尝试在错误控制台中执行这2个代码块:

第一.输出NodeList.

var selector = "*[data-type=day][data-day='23']";
var a = document.querySelectorAll( selector );
alert( a );
Run Code Online (Sandbox Code Playgroud)

第二个.生成错误.

var selector = "*[data-type=day][data-day=23]";
var a = document.querySelectorAll( selector );
alert( a );
Run Code Online (Sandbox Code Playgroud)

为什么data-type=day语法不好而data-day=23不是?属性值是否应始终包装为data-type='day'

这是例外,在第二种情况下引发:

[例外......"指定了无效或非法字符串"代码:"12"nsresult:"0x8053000c(SyntaxError)"]

Que*_*tin 10

浏览器只是遵循以下规范:

属性值必须是CSS标识符或字符串.

标识符:

在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A0和更高,加上连字符( - )和下划线( _); 他们不能以数字开头 ......

所以23(以数字开头)必须表示为字符串:

字符串可以用双引号或单引号编写