对多个 类 使用模板文字

Use template literals for multiple classes

const dummydata = [
  { id: 1, description: "Walk the dog", completed: false },
  { id: 2, description: "Play football", completed: true }
];

这是我用来在 HTML 中创建 classes 的数据,如下所示:

this.root.innerHTML = `
<div ${data.completed ? "class=todo-item done" : "class=todo-item"}> # Does not work
<input type="checkbox" ${data.completed ? "checked" : ""} />
<h4>${data.description}</h4>
</div>`;

在我的 HTML 中它看起来是这样的:

<div class="todo-item" done>

"done"不包含在class中。我做错了什么?

试试这个,

this.root.innerHTML = `
    <div class="${data.completed ? 'todo-item done' : 'todo-item'}">
    <input type="checkbox" ${data.completed ? "checked" : ""} />
    <h4>${data.description}</h4>
    </div>
`;

您的问题是缺少引号

<div class=todo-item />

将被浏览器解析为:

<div class="todo-item" />

<div class=todo-item done />

将被浏览器解析为:

<div class="todo-item" done />

所以省略引号是有效的,除非你有 space

更短的表示法是:

this.root.innerHTML = `
    <div class="todo-item ${data.completed ? 'done' : ''}">
    <input type=checkbox ${data.completed ? 'checked' : ''}/>
    <h4>${data.description}</h4>
    </div>`;

另请注意 type=checkbox 没有引号表示法,浏览器将添加引号