5 回答

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用字符串插值將變量添加到代碼中,如下所示
function appendHtml(el, str) {
? var div = document.createElement('div'); //container to append to
? div.innerHTML = str;
? while (div.children.length > 0) {
? ? el.appendChild(div.children[0]);
? }
}
let author = "me";
let message = "Message...";
let time = "15:21";
var html = `<li><span class="author">${author}</span><span class="message">${message}</span><span class="time"><div class="line"></div>${time}</span></li>`;
appendHtml(document.body, html);

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果你想插入 html 元素字符串作為 html 節(jié)點(diǎn),你必須創(chuàng)建 html 元素來使用appendChild()
但是,insertAdjacentHTML()
如果作為字符串傳遞,則允許您添加 html 元素。 https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
let author = "me";
let message = "Message...";
let time = "15:21";
let str = `<li><span class="author">${author}</span><span class="message">${message}</span><span class="time"><div class="line"></div>${time}</span></li>`;
document.querySelector('#nav').insertAdjacentHTML('beforeend', str);
<ul id='nav'><ul>
let html = `<li>
<span class="author">Me</span>
<span class="message">Message...</span>
<span class="time">
<div class="line"></div>
15:21
</span>
</li>`;
document.querySelector('#list').insertAdjacentHTML('beforeend', html);
<ul id='list'></ul>

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用模板文字來insertAdjacentHTML
實(shí)現(xiàn)干凈的方法。
function createListItem({ author, message, time }) {
? return `<li>
? ? <span class="author">${author}</span>
? ? <span class="message">${message}</span>
? ? <span class="time">
? ? ? <div class="line"></div>
? ? ? ${time}
? ? </span>
? </li>`;
}
const ul = document.querySelector('ul');
ul.insertAdjacentHTML('beforeend', createListItem({
? author: 'me',
? message: 'Message...',
? time: '15:21'
}));
.line { display: inline };
<ul>
? <li>Current</li>
</ul>

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
這是一個(gè)你可以使用的小技巧。
您實(shí)際上可以使用現(xiàn)有的 DOM (HTML) 作為一種模板,基本上克隆元素,然后用您想要的值替換部分。
首先,您使用remove從DOM中刪除該元素,盡管該元素已從DOM中刪除,但這并不能阻止您克隆它。
現(xiàn)在,每當(dāng)您需要另一個(gè)時(shí),請(qǐng)調(diào)用clone(true), true = deepClone,然后使用 querySelector 將 DOM 的一部分替換為您想要的位。最后將這個(gè)克隆元素添加到 DOM 中。
下面是一個(gè)簡(jiǎn)單的例子..
const ol = document.querySelector('ol');
const template = document.querySelector('li');
template.remove();
function append(o) {
const {author, message, time} = o;
const clone = template.cloneNode(true);
clone.querySelector('.author').innerText=author;
clone.querySelector('.message').innerText=message;
clone.querySelector('.time').lastChild.nodeValue=time;
ol.appendChild(clone);
}
append({
author: "me",
message: "Message...",
time: "15:21"
});
append({
author: "Another me",
message: "Something else..",
time: "12:42"
});
append({
author: "Whatever",
message: "lalala..",
time: "17:20"
});
.author {
font-weight: bold;
margin-right: 1rem;
}
.time {
color: green;
}
li {
margin: 0.5rem;
border: 1px solid silver;
}
.line {
border-bottom: 1px dotted red;
}
<ol>
<li>
<span class="author">Me</span>
<span class="message">Message...</span>
<span class="time">
<div class="line"></div>
15:21
</span>
</li>
</ol>

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
更簡(jiǎn)單,(對(duì)我來說)
const DomParser = new DOMParser()
function makeLI( author, message, time)
{
let ElemLI =
`<li>
<span class="author">${author}</span>
<span class="message">${message}</span>
<span class="time">
<div class="line"></div>
${time}
</span>
</li>`
return (DomParser.parseFromString( ElemLI, 'text/html')).body.firstChild
}
// proof...
myList.appendChild(makeLI('you','Message...','15:21'))
myList.appendChild(makeLI('me','someone in ?','21:25'))
<ul id="myList"></ul>
- 5 回答
- 0 關(guān)注
- 194 瀏覽
添加回答
舉報(bào)