javascript - 使用 javaScript 将元素添加到 DOm 结构中
问题描述
我用 java 脚本 DOM 创建了一个表,但是出了点问题。首先这是我的代码
var tblBody = document.getElementById("cocktailtablebody");
for (var i = 0; i < mydata.length; i++) {
var row = document.createElement("tr");
var cell = document.createElement("th");
var cellText = document.createTextNode(mydata[i].name);
cell.appendChild(cellText);
row.appendChild(cell);
let str = "<ul>";
for (const [p, val] of Object.entries(mydata[i].ingredients)) {
str += `<li>${p}:${val}</li>`;
}
str += "</ul>";
var cell = document.createElement("td");
var cellText = document.createTextNode(str);
cell.appendChild(cellText);
row.appendChild(cell);
var cell = document.createElement("td");
var cellText = document.createTextNode("1");
cell.appendChild(cellText);
row.appendChild(cell);
var cell = document.createElement("td");
var cellText = document.createTextNode("2");
cell.appendChild(cellText);
row.appendChild(cell);
}
但结果是
<ul>
并且<li>
不是写成html标签,而是写成普通文本?
怎么了??
mydata 是一个 json
[
{
"name": "Rum & Coke",
"ingredients": {
"rum": 12,
"coke": 48
}
}, ....]
解决方案
您必须使用innerHTML
将ul
and呈现li
为 html 元素。否则它们将被视为纯文本。
工作示例
var tblBody = document.getElementById("cocktailtablebody");
const mydata = [
{
name: 'name', ingredients: {
Inc1: 'Inc 1',
Inc2: 'Inc 2',
Inc3: 'Inc 3',
Inc4: 'Inc 4',
}
}
];
for (var i = 0; i < mydata.length; i++) {
var row = document.createElement("tr");
var cell = document.createElement("th");
var cellText = document.createTextNode(mydata[i].name);
cell.appendChild(cellText);
row.appendChild(cell);
let str = '<ul>';
for (const [p, val] of Object.entries(mydata[i].ingredients)) {
str += `<li>${p}:${val}</li>`;
}
str += '</ul>';
var cell = document.createElement("td");
var cellText = document.createElement('div');
cellText.innerHTML = str;
cell.appendChild(cellText);
row.appendChild(cell);
var cell = document.createElement("td");
var cellText = document.createTextNode("1");
cell.appendChild(cellText);
row.appendChild(cell); var cell = document.createElement("td");
var cellText = document.createTextNode("2");
cell.appendChild(cellText);
row.appendChild(cell);
tblBody.appendChild(row);
}
<div id="cocktailtablebody"></div>
推荐阅读
- java - 在mysql数据库中的固定日期增加列值
- scala - 从多个 Kafka 主题中读取数据(通用列表类设计)
- python - 如何为现有项目生成 asgi.py?
- java - 错误:E/LB:无法打开文件:没有这样的文件或目录 - Android Studio
- ios - fastlane:错误域 = NSPOSIXErrorDomain 代码 = 1“不允许操作”
- laravel - 无法通过 Laravel 刀片中的扩展传递变量
- java - 使用循环创建子字符串
- r - 长格式分离问题
- python - 对如何在 matlab 中的 HDF5 文件中存储 3D 矩阵感到困惑?
- python - 如何从 bash 脚本获取带有 python 脚本中目录路径的变量?