根據此帖子下方的第一條評論編輯我的答案。
的Javascript
var nodeTypes = [];
function getContent(elm) {
if (elm.nodeType != 1 && elm.nodeType != 3) return;
// skip if it's not an element or text node
if (elm.nodeType == 1) { // element
var comp = window.getComputedStyle(elm,null);
var disp = comp.getPropertyValue('display') != 'none';
var hidden = comp.getPropertyValue('visibility') == 'hidden';
if (!disp || hidden) return;
// skip if it's hidden
if (elm.childNodes.length) {
for (var i = 0; i < elm.childNodes.length; i++)
getContent(elm.childNodes[i]);
return;
}
}
if (/^\s+$/.test(elm.nodeValue)) return;
// skip if it's empty
nodeTypes.push((elm.nodeType == 3 ? 'text node' : elm.nodeName).toLowerCase());
}
</script>
CSS
<style type="text/css">
a span {display:none;}
</style>
HTML
<body>
<div class="div1class">
<div class="div2class">
<p>
some text here
<img src="img.jpg" />
some text here too
</p>
</div>
<div>
<a href="#">Anchor example<span>hidden element</span></a>
</div>
<!-- some comment -->
<div class="div3class"><img src="img2.jpg" /></div>
</div>
<script type="text/javascript">
nodeTypes = [];
getContent(document.getElementsByClassName('div1class')[0]);
console.log(nodeTypes);
</script>
</body>
輸出
["text node", "img", "text node", "text node", "img"]
您將需要採取多種可能性考慮在內,如看起來的代碼空的元素,但實際上有一個背景圖像。使用jQuery會更可靠。
所以你想要一個文本節點和圖像的數組?你必須遍歷DOM來尋找這些元素(檢查每個節點的'nodeType')。 – bfavaretto
@bfavaretto我也想要例如< h>元素。 – P5music
不要低估div等的力量,他們也可以有背景圖片;) –