querySelector,通配符元素匹配?
有没有办法做一个通配符元素名称匹配使用querySelector
或querySelectorAll
? 我在属性查询中看到对通配符的支持,但不支持元素本身。
我试图parsing的XML文档基本上是一个扁平的属性列表,我需要find名称中包含特定string的元素。
我意识到XML文档可能需要重组,如果我需要这个,但这不会发生。
任何解决scheme,除了回到使用明显不赞成的XPath(IE9掉了它)是可以接受的。
[id^='someId']
将匹配从someId
开始的所有id。
[id$='someId']
将匹配所有以someId
结尾的id。
[id*='someId']
将匹配包含someId
所有id。
如果你正在寻找name
属性只是用name
replaceid
。
如果你在谈论元素的标签名称,我不认为有一种使用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”。