querySelectorAll语法无效

时间:2012-10-23 06:44:33

标签: javascript firefox css-selectors selectors-api

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

第一个。输出NodeList。

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

第二个。生成错误。

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

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

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

  

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

1 个答案:

答案 0 :(得分:10)

浏览器只关注the specification,其中包含:

  

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

identifiers

  

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

所以23(以数字开头)必须表示为a string

  

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

编写