简体   繁体   English

如何选择某些其他标签内的标签

[英]how to select tags that are inside certain other tags

I want to select all the <"a"> tags on a page that are inside all the <"code"> tags on the page so I can count them, and I want to do this using JavaScript.. how can I do this? 我想选择页面上所有<“ code”>标记内的所有<“ a”>标记,以便对它们进行计数,并且我想使用JavaScript进行此操作。如何执行此操作?

I tried using document.getElementsByTagName("code").getElementsByTagName("a"); 我尝试使用document.getElementsByTagName(“ code”)。getElementsByTagName(“ a”); and document.getElementsByTagName("code").querySelectorAll("a"); 和document.getElementsByTagName(“ code”)。querySelectorAll(“ a”);和 but it doesn t seem to work 但这似乎不起作用

document.getElementsByTagName("code").getElementsByTagName("a");

VM1278:1 Uncaught TypeError: document.getElementsByTagName(...).getElementsByTagName is not a function at :1:39 VM1278:1未被捕获的TypeError:document.getElementsByTagName(...)。getElementsByTagName不是位于:1:39的函数

You can use .querySelectorAll(selectors) . 您可以使用.querySelectorAll(selectors)

 const matches = document.querySelectorAll('code a'); console.log(matches); 
 <code> <a>Test</a> <p>Other tag</p> <a>Example</a> </code> 

You need to loop through the initial element search, since it returns an HTMLCollection of elements: 您需要遍历初始元素搜索,因为它会返回元素的HTMLCollection:

var elements = document.getElementsByTagName("code");
var all = [];
for(var i = 0; i < elements.length; i++){
    var tempElements = elements[i].getElementsByTagName("a");
    all = [...tempElements, ...all];
}

Try this instead: 尝试以下方法:

document.querySelectorAll('code a').length

The querySelector and querySelectorAll functions accept CSS-like DOM selectors and return a node or NodeList, respectively. querySelectorquerySelectorAll函数接受类似CSS的DOM选择器,并分别返回节点或NodeList。

See: 看到:

您可以使用

document.querySelector("code > a");

you can do it like this: 您可以这样做:

 var anchors = document.getElementById("thediv").getElementsByTagName("a"); alert("The Div has " + anchors.length + " links in it"); 
 <div id="thediv"> <a href="#">link 1</a> <a href="#">link 2</a> <a href="#">link 3</a> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM