querySelector,通配符元素匹配?

有没有办法做一个通配符元素名称匹配使用querySelectorquerySelectorAll ? 我在属性查询中看到对通配符的支持,但不支持元素本身。

我试图parsing的XML文档基本上是一个扁平的属性列表,我需要find名称中包含特定string的元素。

我意识到XML文档可能需要重组,如果我需要这个,但这不会发生。

任何解决scheme,除了回到使用明显不赞成的XPath(IE9掉了它)是可以接受的。

[id^='someId']将匹配从someId开始的所有id。

[id$='someId']将匹配所有以someId结尾的id。

[id*='someId']将匹配包含someId所有id。

如果你正在寻找name属性只是用namereplaceid

如果你在谈论元素的标签名称,我不认为有一种使用querySelector

将tagName设置为显式属性:

 for(var i=0,els=document.querySelectorAll('*'); i<els.length; els[i].setAttribute('tagName',els[i++].tagName) ); 

我自己需要一个XML文档,嵌套标签以_Sequence结尾。 有关更多详细信息,请参阅JaredMcAteer答案。

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

我没有说这将是漂亮:) PS:我会build议使用tag_name over tagName,所以当你读'计算机生成',隐式的DOM属性时,你不会遇到干扰。

我在讨论涉及querySelector()的单行问题,并结束了这个问题,并且使用标记名称和querySelector()有一个可能的OP问题答案,用@JaredMcAteer来回答我的问题,也就是说有RegEx类在vanilla Javascript中与querySelector()匹配

希望以下内容能够满足OP的需求或其他人的需求:

 // 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"]'); 

那么,我们可以,例如,得到src的东西,等等…

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

+

我刚写了这个简短的脚本, 似乎工作。

 /** * 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" 

这适用于我:

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

显示所有以whith结尾的名字“057”。