如何用querySelectorAll()仅返回特定球员——排除伤病名单球员
解决方法
方法1:直接定位Power Play板块提取球员
先精准锁定包含「Power Play #1」和「Power Play #2」标题的板块,只在这些板块内提取球员,从源头上避开受伤球员:
// 获取所有阵容分组板块 const powerPlayGroups = document.querySelectorAll('.lineup__group'); powerPlayGroups.forEach(group => { const titleElement = group.querySelector('.lineup__title'); // 只处理标题匹配Power Play的板块 if (titleElement && (titleElement.textContent.includes('Power Play #1') || titleElement.textContent.includes('Power Play #2'))) { const players = group.querySelectorAll('.lineup__player > a'); players.forEach(player => { console.log(player.textContent.trim()); }); } });
方法2:排除Injuries板块内的球员
先找到「Injuries」板块的容器,再筛选所有球员链接时排除该容器内的元素:
// 获取所有球员链接 const allPlayers = document.querySelectorAll('.lineup__player > a'); let injuryContainer = null; // 定位Injuries板块 Array.from(document.querySelectorAll('.lineup__group')).forEach(group => { const title = group.querySelector('.lineup__title'); if (title && title.textContent.includes('Injuries')) { injuryContainer = group; } }); // 输出非受伤板块的球员 allPlayers.forEach(player => { if (!injuryContainer.contains(player)) { console.log(player.textContent.trim()); } });
方法3:通过受伤图标筛选(页面自带标识)
观察页面会发现受伤球员的行内通常带有受伤图标(比如.icon-injury类),可以通过检查该标识排除受伤球员:
const allPlayers = document.querySelectorAll('.lineup__player > a'); allPlayers.forEach(player => { const playerRow = player.closest('.lineup__player'); // 检查当前球员行是否存在受伤图标 const isInjured = playerRow.querySelector('.icon-injury') !== null; if (!isInjured) { console.log(player.textContent.trim()); } });
内容的提问来源于stack exchange,提问作者Icon
相关产品推荐
相关产品推荐

