尝试在错误控制台中执行以下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)”]
答案 0 :(得分:10)
浏览器只关注the specification,其中包含:
属性值必须是CSS标识符或字符串。
在CSS中,标识符(包括选择器中的元素名称,类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U + 00A0及更高,加上连字符( - )和下划线(_);他们不能以数字开头 ......
所以23
(以数字开头)必须表示为a string:
字符串可以用双引号或单引号
编写