Javascript 从HTMLDOM中选择不同的标记集
如何使用jQuery/JS从HTMLDOM获取一组不同的标记 下面是示例DOMJavascript 从HTMLDOM中选择不同的标记集,javascript,jquery,html,Javascript,Jquery,Html,如何使用jQuery/JS从HTMLDOM获取一组不同的标记 下面是示例DOM HTML -- Head -- META -- TITLE -- H1 -- BODY -- DIV -- DIV -- FORM -- INPUT -- INPUT -- INPUT 那么输出应该是 HTML HEAD META TITLE H1 BODY DIV FORM INPUT 谢谢 iuq您可以使用获取所有元素的节点名称,然后取出
HTML
-- Head
-- META
-- TITLE
-- H1
-- BODY
-- DIV
-- DIV
-- FORM
-- INPUT
-- INPUT
-- INPUT
那么输出应该是
HTML
HEAD
META
TITLE
H1
BODY
DIV
FORM
INPUT
谢谢iuq您可以使用获取所有元素的节点名称,然后取出重复项:
// Get all tag names
var tags = $("*").map(function() {
return this.nodeName;
}).get()
// Filter out the duplicates
.filter(function(value, index, self) {
return self.indexOf(value) === index;
});
console.log(tags);
如果您根本不需要jQuery,则可以将jQuery的映射替换为,并结合使用:
var tags = Array.prototype.map.call(document.querySelectorAll("*"), function(e) {
return e.nodeName;
}).filter(function(value, index, self) {
return self.indexOf(value) === index;
});
console.log(tags);
香草JS和as功能:
function getDistinctTags() {
var els = Array.prototype.slice.call(document.querySelectorAll('*'));
return els.reduce(function (result, el) {
if (result.indexOf(el.tagName) === -1) {
result.push(el.tagName);
}
return result;
}, []);
}
通过使用jQuery提供的选择器:。我真的不确定你在这里想要什么答案。我打赌你想要
*
我已经编辑了我的问题,希望它能澄清!这样就不会重复线性搜索:var name=Object.keys([].reduce.call($(“*”),函数(obj,el){obj[el.tagName]=1;返回obj;},{})代码>感谢您的解决方案+1'd it。