有没有办法使用querySelector
或querySelectorAll
进行通配符元素名称匹配?我在属性查询中看到对通配符的支持,但不支持元素本身。querySelector,通配符元素匹配?
我试图解析的XML文档基本上是一个扁平的属性列表,我需要找到在其名称中包含特定字符串的元素。
我意识到XML文档可能需要重组,如果我需要这个,但那不会发生。
任何解决方案,除了回去使用显然已弃用的XPath(IE9放弃它)是可以接受的。
有没有办法使用querySelector
或querySelectorAll
进行通配符元素名称匹配?我在属性查询中看到对通配符的支持,但不支持元素本身。querySelector,通配符元素匹配?
我试图解析的XML文档基本上是一个扁平的属性列表,我需要找到在其名称中包含特定字符串的元素。
我意识到XML文档可能需要重组,如果我需要这个,但那不会发生。
任何解决方案,除了回去使用显然已弃用的XPath(IE9放弃它)是可以接受的。
[id^='someId']
将匹配从someId
开始的所有ID。
[id$='someId']
将匹配以someId
结尾的所有ID。
[id*='someId']
将匹配所有包含someId
的ID。
如果您正在寻找name
属性,请将id
替换为name
。
如果你谈论的是我不相信有使用querySelector
谢谢,我的意思是标签名称。 – 2012-01-03 15:32:04
是这个ie8 +? – SuperUberDuper 2016-02-11 15:54:17
嗯,我不能做document.querySelectorAll(“div。[id $ ='foo']”) – SuperUberDuper 2016-02-11 15:56:25
设置标记名的明确属性的方法的元素的标签名称:
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:我会建议使用tag_name
超过记名,所以阅读“计算机生成”,隐含的DOM属性,当你不碰到干扰。
我被搞乱/沉思对涉及querySelector()&在这里结束了,&有可能的答案,使用标签名& querySelector(),与学分OP问题@JaredMcAteer回答我的问题的俏皮话,又名有querySelector()正则表达式样的比赛在香草的Javascript
希望能在下面将&适合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);
//> (...)
+
这个工作对我来说:
NSString *nameInWeb = [NSMutableString stringWithFormat:@"document.querySelector('[name$=\"057\"]').name"];
显示所有名称蒙山 “057” 结尾。
这是什么编程语言?!这是一个** JavaScript **问题 – 2016-04-06 15:50:45
这是Objective C,而不是JavaScript – vonox7 2016-04-07 11:41:54
我刚写了这个简短的脚本;似乎工作。
/**
* 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"
“name”是指标签名称? – kennytm 2012-01-03 15:12:04
不幸的是 – 2012-01-03 15:27:16
@ JaredMcAteer的回答非常值得接受为答案。请考虑。 – RBT 2017-06-20 08:28:59