[英]Is it a good practice to put html code with plain text as a value of an attribute?
將文本和 html 代碼作為屬性的值被認為是好還是壞的做法,這里是一個例子:
<script>
var name = '<h3>name</h3>Here goes a description about the name attribute';
var elem = document.getElementById('monElem');
elem.innerHTML = name;
</script>
知道 html 標簽之間的文本是靜態文本而不是動態文本這一事實。 如果這是一個不好的做法,那么使用模板引擎的解決方案是什么?
除非您使用此代碼生成大量DOM 內容,即執行數百或數千次,否則您會很好。
為了完整起見,我想提一下,還有其他幾種從 Javascript 生成 HTML 內容的方法:
這三者的性能普遍高於使用innerHTML
,但目前三者之間的差異在瀏覽器和瀏覽器版本之間相當不一致。
此外, <template>
尚未在所有瀏覽器中得到完全支持,舊瀏覽器也不支持。
如果目的是按需顯示/隱藏此靜態HTML
,那么最好不要在HTML
文檔中動態添加和刪除它,而是通過CSS
顯示/隱藏它:
<body>
<div id="hoverMe" onmouseout="showHelp(0)" onmousemove="showHelp(1)">
Hover me to learn about "name"
</div>
<div id="monElem" style="display:none">
<h3>name</h3>
Here goes a description about the name attribute
</div>
</body>
<script>
var elem = document.getElementById('monElem');
function showHelp(show) {
elem.style.display = show ? '' : 'none';
}
</script>
這也將比在需要時將元素添加到 DOM 具有更好的性能。
這取決於您團隊中的風格指南,但在大多數情況下,這是一種不好的做法。
更好的解決方案是當您通過 javascript 創建新元素時:
var h3 = document.createElement("h3");
var text = document.createTextNode("Any name … .");
h3.appendChild(text);
var elem = document.getElementById('monElem');
elem.insertBefore(h3, elem.firstChild);
為什么更好? 只是因為它更快、更方便、更可預測。
在 w3schools 上閱讀有關文檔方法的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.