2

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

第一。输出节点列表。

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)”]

4

1 回答 1

10

浏览器只是遵循规范,上面写着:

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

标识符

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

因此23(以数字开头)必须表示为字符串

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

于 2012-10-23T06:47:32.950 回答