de los metadatos en la página utilizando nombres de atributos como table:rowNum:<name>
, por ejemplo,en javascript dom, ¿existen reglas para los nombres de los atributos? consiguió
var row = document.createElement('tr'); row.setAttribute('tup','emp:1'); row.setAttribute('emp:1:pkid','123');
han estado utilizando nombres delimitados por dos puntos (por ejemplo, name='emp:1:emp_id'
) durante años con buenos resultados, pero hoy en día poco con los dos puntos delimitados por los nombres de atributos
en particular:
var el2 = row.parentNode.querySelector("[emp:1:pkid]"); => `Error: SYNTAX_ERR: DOM Exception 12`
son de carácter especial como ':' dom ilegal en los nombres de atributos? ¿Pueden escaparse los caracteres especiales para trabajar con querySelector()
?
desde la consola de cromo:
> row.parentNode.querySelector('[emp:1:pkid]'); Error: SYNTAX_ERR: DOM Exception 12
según James (abajo):
> row.parentNode.querySelector('[emp\\:1\\:pkid]'); 123
pero el problema - no funciona con getAttribute
- pia
> row.getAttribute('emp:1:pkid'); 123 > row.getAttribute('emp\\:1\\:pkid'); null
interesante y aún no estoy seguro (buscándola). Mientras tanto, para futuros proyectos, considere usar 'data()' de jQuery. Te permite establecer cualquier dato arbitrario y asociarlo con tus elementos dom (ambos del servidor para que tu js pueda usarlo y solo del lado del cliente. Http://api.jquery.com/jQuery.data/ – Milimetric
Los atributos DOM son de escriba DOMString que es una secuencia codificada UTF-16. Por lo que puedo decir, los caracteres que está utilizando deberían estar bien. No estoy 100% seguro de eso, aunque de ahí el comentario en lugar de responder. –
@cc young - ' querySelector ('[emp \\: 1]') 'devolverá' null' porque no coincide con un elemento (basado en el ejemplo que publicó originalmente). ¿Quiso decir '[emp \\: 1 \\: actualizar ] '? –