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 但似乎没有用。谢谢
完整代码:
getJobs = async() => {
try {
response = await fetch("https://raw.githubusercontent.com/ChrisPrzR/jobs-filtering-app/main/data.json");
const data = await response.json();
return data;
} catch (error) {
console.log('Error getting data', error)
}
}
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
}
const main = async() => {
const companies = document.querySelector('.cards')
companies.innerHTML = await renderJobs()
}
main()
selector = () => {
const tagName = Array.from(document.querySelectorAll('.tags')).flatMap(el => el.children)
console.log(tagName)
}
selector()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="cards"></div>
<script src="./app.js"></script>
</body>
</html>
解决方案
推荐阅读
- java - 有没有从 HttpServletRequest 读取表单数据的方法?
- java - Java Spring Hibernate SQL select with order by Causes in DB2 对性能影响很大
- c# - 实体框架核心自动增量无法正常工作
- tsql - 如何使用 json_query 在 json 中拆分数组?
- c - 如何修复在 EXTI9-5 上多次触发的中断?
- bash - 有没有办法优化此代码并使其更快或任何其他更好的解决方案?
- r - 错误 "Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :java.io.IOException:ZIP entry size is too large" 的解决方案?
- sql - 如何使用 SUM 函数和组连接 SQL 中的表?
- android-studio - Android Studio:.sfb 文件未显示在查看器中
- windows - 在 Windows 上使用 PDO ODBC 连接到 DB2 的字符错误