javascript - 如何在 javascript 中修复 [object HTMLDivElement]?
问题描述
在检查包装组件 getColors 正在产生 [object HTMLDivElement]
如何解决这个问题?当安慰这个 getColors() 产生 div 元素时,有什么方法可以将它转换为元素
const colors = [
{
colorName: "Rocking red",
shades: [
"#E44236",
"#B83227",
"#D63031",
"#E84342",
"#FF3031",
"#BA2F16",
"#EC4849",
"#FF3E4D",
"#E71C23",
"#EA425C",
"#E8290B",
"#AE1438",
"#E83350",
"#FF4848",
"#FF362E",
],
},
];
const wrapper = document.querySelector(".wrapper");
const getColors = (shades) => {
const colorsEl = document.createElement("div");
colorsEl.classList.add("colors");
els = shades.map((shade) => {
return `<div class="color" style="background-color: ${shade}"></div>`;
});
els.forEach((el) => {
colorsEl.innerHTML += el;
});
console.log(colorsEl);
return colorsEl;
};
window.onload = () => {
const colorsContainer = document.createElement("div");
colorsContainer.classList.add("colors-container");
colors.map((color) => {
colorsContainer.innerHTML = `<p class="heading">${color.colorName}</p>
${getColors(color.shades)}`;
});
wrapper.appendChild(colorsContainer);
};
解决方案
如果你检查getColors
它的结果是一个对象
解决此问题的一种方法是使用 appendChild 而不是 innerHTML
请看下面的例子
const colors = [
{
colorName: "Rocking red",
shades: [
"#E44236",
"#B83227",
"#D63031",
"#E84342",
"#FF3031",
"#BA2F16",
"#EC4849",
"#FF3E4D",
"#E71C23",
"#EA425C",
"#E8290B",
"#AE1438",
"#E83350",
"#FF4848",
"#FF362E",
],
},
];
const wrapper = document.querySelector(".wrapper");
const getColors = (shades) => {
const colorsEl = document.createElement("div");
colorsEl.classList.add("colors");
const els = shades
.map((shade) => {
return `<div class="color" style="background-color: ${shade}">${shade}</div>`;
})
.join("");
colorsEl.innerHTML = els;
return colorsEl;
};
document.addEventListener("DOMContentLoaded", () => {
const colorsContainer = document.createElement("div");
colorsContainer.classList.add("colors-container");
colors.map((color) => {
const shades = getColors(color.shades);
const heading = document.createElement("p");
heading.classList.add("heading");
heading.textContent = color.colorName;
colorsContainer.appendChild(heading);
colorsContainer.appendChild(shades);
});
wrapper.appendChild(colorsContainer);
});
<div class="wrapper"></div>
推荐阅读
- flutter - StatefulBuilder 与 StatefulWidget
- c# - 具有外键的实体框架运行速度极慢
- c# - Selenium:将文本存储到变量中以供将来验证
- mysql - 在 SQL 中:如何在第一个结束时找到第二个开始的两个日期值?
- c++ - “class”:类型参数“param”与声明不兼容
- angular - 如何将 sass 加载程序放在 app-root 中?
- model-view-controller - 捕获所有以 GUID 结尾的 URL
- android - 将 getLoaderManager().initLoader 替换为 MutableLivedata
- boto3 - Boto3 和 AWS CLI 不兼容问题
- database - 在 postgres 中的表之间创建外键关系