per i meta dati sulla pagina utilizzando nomi degli attributi come table:rowNum:<name>
, ad esempio,in javascript dom, ci sono regole per attribuire nomi?
var row = document.createElement('tr'); row.setAttribute('tup','emp:1'); row.setAttribute('emp:1:pkid','123');
hanno utilizzato nomi delimitati da due punti (ad esempio, name='emp:1:emp_id'
) per anni con buon successo, ma oggi ha ottenuto po 'con i nomi degli attributi delimitato da due punti
in particolare:
var el2 = row.parentNode.querySelector("[emp:1:pkid]"); => `Error: SYNTAX_ERR: DOM Exception 12`
sono caratteri speciali come ':' illegale in dom attribuiscono nomi? caratteri speciali possono essere sfuggiti per funzionare con querySelector()
?
dalla console chrome:
> row.parentNode.querySelector('[emp:1:pkid]'); Error: SYNTAX_ERR: DOM Exception 12
come da James (sotto):
> row.parentNode.querySelector('[emp\\:1\\:pkid]'); 123
ma il problema - non funziona con getAttribute
- pia
> row.getAttribute('emp:1:pkid'); 123 > row.getAttribute('emp\\:1\\:pkid'); null
interessante e non ne sono ancora sicuro (cercandolo). Nel frattempo, per i progetti futuri, considera l'uso di 'data()' di jQuery. Ti consente di impostare qualsiasi dato arbitrario e associarlo con i tuoi elementi dom (sia dal server in modo che i tuoi js possano usarlo sia dal lato client.) Http://api.jquery.com/jQuery.data/ – Milimetric
Gli attributi DOM sono di digita DOMString che è una sequenza codificata UTF-16. Per quanto posso dire, i caratteri che stai usando dovrebbero andare bene, non sono sicuro al 100%, anche se di conseguenza il commento piuttosto che la risposta: –
@cc young - ' querySelector ('[emp \\: 1]') 'restituirà' null' perché non corrisponde ad un elemento (basato sull'esempio che hai pubblicato originariamente). Intendevi '[emp \\: 1 \\: update ] '? –