使用 map
方法來遍歷數據陣列並動態生成 HTML
,例如圖片網站、使用者的資訊、新聞網站等
以下是我的side project中新聞網站的code
import { news } from "../news/news.js";
let indexNewsHTML = "";
for (let i = 0; i < 6; i++) {
indexNewsHTML += `
<li>
<article>
<a href="/新聞頁面.html" target="_blank">
<div class="img-box js-news-page-click" data-newspage-id="${news[i].id}">
<div class="img" style="background-image: url(${news[i].img.rectangle})">
</div>
<p class="tag">本週最新</p>
</div>
<div class="txt-box">
<p class="cat">ニュース </p>
<p class="tit js-news-page-click" data-newspage-id="${news[i].id}">${news[i].headline}</p>
<div class="sta-box">
<p class="outh">By ${news[i].writer.name} </p>
<p class="data">${news[i].time.year}年${news[i].time.month}月${news[i].time.day}日</p>
</div>
</div>
</a>
</article>
</li>
`;
}
document.querySelector(".js-index-news-wrap").innerHTML = indexNewsHTML;
會長這樣
不過其實除了innerHTML
,appendChild
也可以生成 HTML
var newParagraph = document.createElement('p');
var textNode = document.createTextNode('New Content');
newParagraph.appendChild(textNode);
document.getElementById('myElement').appendChild(newParagraph);
差異:
innerHTML
主要用於直接替換或設置元素的 HTML 內容,而 appendChild
主要用於將新的節點添加到現有元素的子節點列表中。注意:
innerHTML
可能較簡單,但要注意它會覆蓋現有的事件和狀態。appendChild
則是在已有的基礎上進行擴充,更適用於不影響現有內容的情況下產生新node。