javascript - 查询选择器不适用于模板文字
问题描述
我有一个脚本,它呈现一些 HTML 内容,看起来像这样。
renderJobs = async () => {
const jobs = await getJobs();
const view = `
${jobs.map(companyName => `
<div class="show">
<div class="company-details">
<p>${companyName.company}</p>
<object type="image/svg+xml" data="${companyName.logo}"></object>
<h3>${companyName.position}</h3>
<p class="details">${companyName.postedAt} - ${companyName.contract} - ${companyName.location}</p>
</div>
<div class="tags">
<p>${companyName.role}</p>
${companyName.languages.map(lang => `
<p>${lang}</p>
`).join('')}
<p>${companyName.tools}</p>
<p>${companyName.level}</p>
</div>
</div>
`).join('')}
`
return view }
现在,我正在尝试使用类标签选择每个 div 上的所有子项。所以我可以稍后循环它们并只渲染具有特定内容的卡片。
这是该片段:
selector = () => {
const tagName = document.querySelectorAll('.tags').children;
console.log(tagName)}
但它返回未定义,我不知道是否使用模板文字规则会改变 DOM。我尝试了事件监听器 DOMContentLoaded 但似乎没有用。我还尝试了长度属性以查看 id 有什么回来,但我得到的只是 0。谢谢
解决方案
querySelectorAll()
返回一个 html 元素列表。所以它没有任何children
属性。您将不得不遍历所有元素然后获取子元素。如果你想要所有元素的孩子,你什么时候可以使用flatMap()
const tagName = [...document.querySelectorAll('.tags')].flatMap(x => x.children);
推荐阅读
- python - 当代码对其他人正常工作时,“'NoneType' 对象不可迭代”。我如何找出问题所在?
- wpf - 附加的“属性已由”我的通用 BaseAttachedProperty 类导致设计时异常
- javascript - 找到父 td 标签并禁用点击
- javascript - 如何将信息从 WPF 应用程序传递到 HTML 页面
- python - matrix_in_spiral_order(matrix) 的空间和时间复杂度
- php - Mysqli_fetch_array 中的 PHP While 循环中断
- minizinc - MiniZinc:无统计输出
- python-3.x - Python3:使用字符串表示发送电子邮件
- excel - 如何使用 MS Outlook 模板 (.oft) 发送电子邮件,并结合插入电子邮件正文的变量值(通过 Excel 或其他方式)
- android - 如何延迟已经在可运行文件中的 Kotlin (Android Studio) 中的 if-else 执行?