Javascript。按aria标签和类获取所有元素
我试图计算outlook中的邮件数量(我可以工作),但对于未读邮件,我正在寻找aria标签,在那里我可以找到“No leído”(未读),我尝试使用此数组方法,然后返回他的长度,但我不工作,有什么建议吗Javascript。按aria标签和类获取所有元素,javascript,sorting,dom,Javascript,Sorting,Dom,我试图计算outlook中的邮件数量(我可以工作),但对于未读邮件,我正在寻找aria标签,在那里我可以找到“No leído”(未读),我尝试使用此数组方法,然后返回他的长度,但我不工作,有什么建议吗 function getMailElementsByClass(document_root) { var elements = document_root.getElementsByClassName("_1xP-XmXM1GGHpRKCCeOKjP"); v
function getMailElementsByClass(document_root) {
var elements = document_root.getElementsByClassName("_1xP-XmXM1GGHpRKCCeOKjP");
var mailsRead = 0;
var unRead = [];
for(var i=0; i<elements.length; i++) {
console.log(elements[i]);
mailsRead++;
}
Array.from(elements).forEach(v => v.getAttribute('aria-label').startsWith('No Leído') ? unRead.push(v) : v);
return mailsRead + ' Mails registrados! \nMails no leídos: ' + unRead.length;
}
函数getMailElementsByClass(文档根目录){
var elements=document_root.getElementsByClassName(“_1xP-xmxmxm1gghprkceokjp”);
var-mailsRead=0;
var未读=[];
对于(var i=0;iv.getAttribute('aria-label').startsWith('No Leído'))?未读的.push(v):v);
return mailsRead+“Mails registerdos!\n邮件无leiídos:”+未读长度;
}
.getElementsByClassName()
是一个已有25年以上历史的API,尽管它仍然是有效的代码,因为它返回一个“活动”节点列表并具有性能影响(尤其是在循环时)。而是使用.querySelectorAll()
,它接受任何有效的CSS选择器。此外,您还可以查询所查找的类以及具有所查找属性的类的元素,这些属性以您想要的方式开始
仅供参考:以某些字符开头的属性值的CSS语法是^=
。更多关于属性选择器的信息
整个代码要简单得多,甚至不需要循环
function getUnreadMailElements(doc) {
let unRead = doc.querySelectorAll("._1xP-XmXM1GGHpRKCCeOKjP[aria-label^='No Leído']");
return mailsRead + ' Mails registrados! \nMails no leídos: ' + unRead.length;
}
您能使用
查询选择器吗?如果是这样,请尝试使用”。_1xP-xmxmxm1gghprkceokjp[aria label]”
。我是否也可以使用它来计算读取的邮件总数?使用没有aria标签的相同方法?