querySelector,通配符元素匹配?

问题描述:

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

我试图解析的XML文档基本上是一个扁平的属性列表,我需要找到在其名称中包含特定字符串的元素。

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

任何解决方案,除了回去使用显然已弃用的XPath(IE9放弃它)是可以接受的。

+0

“name”是指标签名称? – kennytm 2012-01-03 15:12:04

+1

不幸的是 – 2012-01-03 15:27:16

+0

@ JaredMcAteer的回答非常值得接受为答案。请考虑。 – RBT 2017-06-20 08:28:59

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

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

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

如果您正在寻找name属性,请将id替换为name

如果你谈论的是我不相信有使用querySelector

+3

谢谢,我的意思是标签名称。 – 2012-01-03 15:32:04

+0

是这个ie8 +? – SuperUberDuper 2016-02-11 15:54:17

+0

嗯,我不能做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” 结尾。

+0

这是什么编程语言?!这是一个** JavaScript **问题 – 2016-04-06 15:50:45

+0

这是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"