【发布时间】:2011-10-19 08:37:26
【问题描述】:
对于页面上的元数据,使用属性名称,如table:rowNum:<name>,例如,
多年来一直使用冒号分隔的名称(例如,name='emp:1:emp_id')并取得了不错的成功,但今天有点使用冒号分隔的属性名称
特别是:
var el2 = row.parentNode.querySelector("[emp:1:pkid]"); => `错误:SYNTAX_ERR:DOM 异常 12`在 dom 属性名称中,像 ':' 这样的特殊字符是非法的吗?可以转义特殊字符以使用querySelector()吗?
从铬控制台: > row.parentNode.querySelector('[emp:1:pkid]'); 错误:SYNTAX_ERR:DOM 异常 12
根据詹姆斯(下):
> row.parentNode.querySelector('[emp\\:1\\:pkid]'); 123但问题 - 不适用于 getAttribute - pia
【问题讨论】:
-
很有趣,我还不确定(查找)。同时,对于未来的项目,考虑使用 jQuery 的
data()。它允许您设置任意数据并将其与您的 dom 元素相关联(都来自服务器,因此您的 js 可以使用它,并且只能在客户端使用。api.jquery.com/jQuery.data -
DOM 属性是 DOMString 类型,它是一个 UTF-16 编码序列。据我所知,您使用的字符应该没问题。我不是 100% 确定这一点,因此评论而不是回答。
-
@cc young -
querySelector('[emp\\:1]')将返回null,因为它与元素不匹配(基于您最初发布的示例)。你的意思是[emp\\:1\\:update]? -
@James - 抱歉这个草率的例子。我关注的是
DOM Execption 12。将修复示例以保持一致
标签: javascript css dom attributes