关于JS查询HTML中p元素个数的问题

阳光test 发布于 2013/02/28 20:56
阅读 1K+
收藏 0

代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
		"http://www.w3.org/TR/html4/loose.dtd">
<html>
	<body>
		<div id = "test">
			<p>
				<h2></h2>
			</p>
			<p></p>
		</div>
		<script>
			var test = document.getElementById("test"),
				ele = test.firstChild,
				count = 0;
			
			while(ele) {
				if(ele.nodeType == 1 && ele.nodeName == "P") {
					count ++;
				}
				ele = ele.nextSibling;
			}
			console.log(count);
		</script>
	</body>
</html>
   本来我认为这里只会查询到两个p,结果发现结果是查询到3个,我使用jquery的sizzle来看,它返回结果也是一样的,我不知道这是为什么?



加载中
0
逝水fox
逝水fox

XHTML中块类标记不能放在P中。类似的还有div,table等。个别浏览器的容错处理是在和h2前后分成两个段落,所以就变成了三个P标记。

用Chrome调试看下文档结构便知

0
Arrowing
Arrowing

因为P中不能有h2,语义问题吧

被浏览器解析自动分割为2个P了!!

<p>
<h2></h2>
</p>
<p></p>

等于

<p></p>
<h2></h2>
<p></p>
<p></p>

Arrowing
Arrowing
回复 @明庭令 : 不会啊,h2不可以而已。。。
阳光test
阳光test
但是我们经常在使用的时候会在p标签中使用到如span,a,h2这种,难道就完全不能使用?
返回顶部
顶部