使用属性的名称,如table:rowNum:<name>
的页面上,例如元数据,在javascript dom中,是否有属性名称的规则?今天
var row = document.createElement('tr'); row.setAttribute('tup','emp:1'); row.setAttribute('emp:1:pkid','123');
一直在使用冒号分隔的名称(例如,name='emp:1:emp_id'
)多年来以良好的成功,但得到了与冒号分隔属性名称位
特别是:
var el2 = row.parentNode.querySelector("[emp:1:pkid]"); => `Error: SYNTAX_ERR: DOM Exception 12`
就像是特殊字符 ':' 在DOM非法属性的名称?可以特殊字符逃脱与querySelector()
?
从铬控制台:
> row.parentNode.querySelector('[emp:1:pkid]'); Error: SYNTAX_ERR: DOM Exception 12
按照詹姆斯(如下图):
> row.parentNode.querySelector('[emp\\:1\\:pkid]'); 123
但问题 - 不getAttribute
工作 - PIA
> row.getAttribute('emp:1:pkid'); 123 > row.getAttribute('emp\\:1\\:pkid'); null
有趣,我还不确定(查找它)。与此同时,对于未来的项目,请考虑使用jQuery的'data()'。它可以让你设置任意的数据并将它与你的dom元素相关联(都来自服务器,所以你的js只能使用它和客户端。)http://api.jquery.com/jQuery.data/ – Milimetric
DOM属性是类型的DOMString,它是一个UTF-16编码的序列,据我所知,你使用的字符应该没问题,但我并不是100%确定的,尽管如此评论而不是答案 –
@cc young - ' querySelector('[emp \\:1]')'将返回null,因为它与元素不匹配(基于你最初发布的例子)。你的意思是'[emp \\:1 \\:update ]'? –