You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用原生JavaScript组合两个querySelectorAll结果获取完整作者姓名

问题根因

你现有代码仅返回第一个作者姓名的原因是:#author-group是页面内唯一ID节点,document.querySelectorAll('#author-group')只会得到长度为1的数组,遍历一次仅能取到第一个存在的名、姓节点内容。

解决方案

方案1:直接配对已获取的名、姓数组

你已经可以分别拿到长度一致的名、姓数组,直接按索引拼接即可:

// 提取名数组
const givenNames = Array.from(document.querySelectorAll('span.text.given-name')).map(s => s.outerText.trim());
// 提取姓数组
const surnames = Array.from(document.querySelectorAll('span.text.surname')).map(s => s.outerText.trim());
// 按索引配对拼接为完整姓名字符串
const fullNames = givenNames.map((given, idx) => `${given} ${surnames[idx]}`).join(', ');

console.log(fullNames);
// 输出:Adrien Petitpas, Julien M. Jaquet, Pascal Sciarini

方案2:遍历作者容器节点(更稳妥)

更推荐该写法,直接选中每个作者的独立容器节点,再提取对应节点下的名、姓,可避免名、姓数组长度不一致导致的错位问题:

const fullNames = Array.from(document.querySelectorAll('#author-group a.author'))
  .map(authorEl => {
    const given = authorEl.querySelector('span.text.given-name')?.outerText.trim() || '';
    const surname = authorEl.querySelector('span.text.surname')?.outerText.trim() || '';
    return `${given} ${surname}`;
  })
  .filter(Boolean) // 过滤无效空值
  .join(', ');

console.log(fullNames);

内容的提问来源于stack exchange,提问作者menteith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:06:04