【发布时间】:2020-09-22 20:07:46
【问题描述】:
这是一个拥有数百个页面的静态网站。我需要从 JS 渲染诸如 topnav 或时事通讯或内容带之类的元素,并定期更改这些内容。
这是我尝试过的:
const components = {
compartirEnFlex: `<h4>Newsletter</h4>`,
newsletterEs: `<h4>Compartir</h4>`,
}
const ids = ['newsletterEs', 'compartirEnFlex', 'infoArticulo', 'infoDeLaWebEnFlexIzq']
function renderComponents(objWithComp, idsArr){
return idsArr.map(function(id){
for(let component in objWithComp){
let arrOfIds = Object.keys(objWithComp);
arrOfIds.map(key => key)
if(id === key){
document.getElementById(id).insertAdjacentHTML('afterbegin', objWithComp[id])
}
}
})
}
renderComponents(components, ids);
每个 id 在 HTML 结构中都有对应的。当我单独执行此操作时,它会起作用。但是,我必须以一种优雅的方式来处理这个问题(并且在这个项目中没有像 React 这样的 JS 框架的可能性)。
感谢您的帮助!
【问题讨论】:
-
arrOfIds.map(key => key)的目的是什么? -
解压
arrOfIds中的数组键,所以我设法比较了if条件下的两个字符串。 -
你检查过控制台吗?有一个错误。
-
您想使用控制台,您必须将函数放在 HTML 页面中的脚本中,因为它使用的是“文档”对象。
-
您可以使用jsfiddle 来制作原型。
标签: javascript html web dom