有沒有辦法使用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