Javascript 计算ul的直接子级,不包括脚本标记
下面是我的HTML结构,其中包括脚本标记Javascript 计算ul的直接子级,不包括脚本标记,javascript,jquery,Javascript,Jquery,下面是我的HTML结构,其中包括脚本标记 <ul id="list"> <li class="item1"><a href="#">Item 1</a></li> <li class="item2"><a href="#">Item 2</a></li> <li class="item3"><a href="#">Item 3</a&g
<ul id="list">
<li class="item1"><a href="#">Item 1</a></li>
<li class="item2"><a href="#">Item 2</a></li>
<li class="item3"><a href="#">Item 3</a></li>
<script type='text/javascript' src="main.js"></script>
<li class="item4"><a href="#">Item 4</a></li>
</ul>
因为脚本标记是列表的子元素。只需将脚本标记移出
。它将使您的代码更有效、更合理,并使其满足您的需要
我承认,如果您坚持在
中留下标记,那么@Pekka的评论将解决您的问题。如果您有兴趣阅读
子元素的计数,这些子元素是由id列表中的元素生成的,我想这是您可以做到的香草javascript
var liElements = document.getElementById('list').getElementsByTagName("li");
alert(liElements.length);
不过,我也强烈建议您(正如许多其他人已经建议您的那样)研究如何使用DOM操作,而不是简单的旧javascript
var liElements = document.getElementById('list').getElementsByTagName("li");
alert(liElements.length);
如果您希望所有子元素都不包含任何
标记元素,这可能会很方便(它不会过滤
标记,但它会过滤掉带有特定类型
属性text/javascript
的标记,该属性仅由
标记使用)
让我知道这是否有帮助…$('ul')。查找('li')。长度
?为什么那里甚至有脚本
标记?这将意味着您的HTML无效。@Pekka感谢您的回复。我需要一个自定义选择器,可以计算容器中任何类型的直接子级。为此,我尝试使用document.queryselectoral(“#list>*”),但它正在计算该脚本tag@Rory是的,它是无效的html,但由于html中的某些原因,我需要使用它。实际上,我已经用javascript开发了一个实用程序,在这里我不能使用jquery。我的团队的开发人员在不同的地方使用我的实用程序,所以我不能使用像Ul>Li这样的特定选择器。我添加上面的代码只是为了说明我在哪里遇到了问题,因为我不能将原始代码放在这里。我有点困惑,在这种情况下,你到底在寻找什么?一种能够选择一个元素的所有直接子元素的方法,不管它们的类型是什么,标记元素除外?是的,我希望这里有相同的子元素。我不想让那个脚本标签被计数。非常感谢你的帮助。它解决了我的问题。@Hems意识到这一方面,因此也意识到这个问题;这个答案对他的实际问题没有帮助。
var nodes = document.querySelectorAll('#list > *:not([type="text/javascript"])');
alert(nodes.length);