querySelector, corrispondenza elemento jolly?

C’è un modo per fare una corrispondenza del nome elemento jolly usando querySelector o querySelectorAll ? Vedo supporto per i caratteri jolly nelle query degli attributi ma non per gli elementi stessi.

Il documento XML che sto cercando di analizzare è fondamentalmente un elenco di proprietà e ho bisogno di trovare elementi che hanno determinate stringhe nei loro nomi.

Mi rendo conto che il documento XML ha probabilmente bisogno di una ristrutturazione se ho bisogno di questo, ma questo non accadrà.

Qualsiasi soluzione, tranne tornare a utilizzare XPath apparentemente deprecato (IE9 lo ha abbandonato) è accettabile.

    [id^='someId'] corrisponderà a tutti gli id ​​che iniziano con someId .

    [id$='someId'] corrisponderà a tutti gli id ​​che terminano con someId .

    [id*='someId'] corrisponderà a tutti gli id ​​contenenti someId .

    Se stai cercando l’attributo name sostituisci l’ id con il name .

    Se stai parlando del nome del tag dell’elemento, non credo che ci sia un modo per usare querySelector

    Imposta il tagName come attributo esplicito:

     for(var i=0,els=document.querySelectorAll('*'); i 

    Ne avevo bisogno io stesso, per un documento XML, con tag nidificati che terminavano in _Sequence . Vedi la risposta di JaredMcAteer per maggiori dettagli.

     document.querySelectorAll('[tagName$="_Sequence"]') 

    Non ho detto che sarebbe carino 🙂 PS: consiglierei di usare tag_name su tagName, in modo da non incorrere in interferenze durante la lettura di attributi DOM impliciti generati dal computer.

    Stavo scherzando / meditando su one-liner che coinvolgono querySelector () e finito qui, e ho una ansible risposta alla domanda OP usando i nomi dei tag e querySelector (), con crediti a @JaredMcAteer per rispondere alla mia domanda, alias hanno RegEx-like corrisponde a querySelector () in vaniglia Javascript

    Sperando che quanto segue sarà utile e si adatta ai bisogni dell’OP o a tutti gli altri:

     // basically, of before: var youtubeDiv = document.querySelector('iframe[src="http://www.youtube.com/embed/Jk5lTqQzoKA"]') // after var youtubeDiv = document.querySelector('iframe[src^="http://www.youtube.com"]'); // or even, for my needs var youtubeDiv = document.querySelector('iframe[src*="youtube"]'); 

    Quindi, possiamo, ad esempio, ottenere la roba src, ecc …

     console.log(youtubeDiv.src); //> "http://www.youtube.com/embed/Jk5lTqQzoKA" console.debug(youtubeDiv); //> (...) 

    +

    Ho appena scritto questa breve sceneggiatura; sembra funzionare.

     /** * Find all the elements with a tagName that matches. * @param {RegExp} regEx regular expression to match against tagName * @returns {Array} elements in the DOM that match */ function getAllTagMatches(regEx) { return Array.prototype.slice.call(document.querySelectorAll('*')).filter(function (el) { return el.tagName.match(regEx); }); } getAllTagMatches(/^di/i); // Returns an array of all elements that begin with "di", eg "div" 

    Questo funziona per me:

     NSString *nameInWeb = [NSMutableString stringWithFormat:@"document.querySelector('[name$=\"057\"]').name"]; 

    Mostra tutti i nomi che terminano con “057”.