[英]How to add/update text of elements created with insertAdjacentHTML method?
[英]How to apply styling to elements created with .insertAdjacentHtml method
我無法將樣式應用於使用.insertAdjacentHTML
創建的元素。
我嘗試使用.style.cssText
但是它不起作用。
JS:
function addTime(){
const newTimeSpan=document.createElement('span');
const date=new Date();
const currentTime=`${addZero(date.getHours())} : ${addZero(date.getMinutes())} : ${addZero(date.getSeconds())}`
const newTimeSpanText=document.createTextNode(currentTime);
newTimeSpan.appendChild(newTimeSpanText);
newTimeSpan.style.cssText="border:solid 1px black;padding:2px;margin-right:10px;";
const liItem=document.querySelector('li');
liItem.insertAdjacentHTML('afterbegin',newTimeSpan.innerHTML)
}
addTime();
HTML:
<div class="list-box">
<ul class="list">
<li class="item">item 1</li>
<li class="item">item 2</li>
<li class="item">item 3</li>
<li class="item">item 4</li>
</ul>
</div>
我實際上希望newTimeSpan.innerHtml
周圍沒有顯示邊框。
使用insertAdjacentElement
並插入元素,而不是其內容。
(function() { const newTimeSpan = document.createElement('span'); const date = new Date(); const currentTime = `${new Date().getHours()} : ${new Date().getMinutes()} : ${new Date().getSeconds()}` const newTimeSpanText = document.createTextNode(currentTime); newTimeSpan.appendChild(newTimeSpanText); newTimeSpan.style.cssText = "border:solid 1px black;padding:2px;margin-right:10px;"; const liItem = document.querySelector('li'); liItem.insertAdjacentElement('afterbegin', newTimeSpan); })()
<div class="list-box"> <ul class="list"> <li class="item">item 1</li> <li class="item">item 2</li> <li class="item">item 3</li> <li class="item">item 4</li> </ul> </div>
問題是您要插入newTimeSpan.innerHTML
。 只是返回范圍內的HTML,而不返回范圍本身,而樣式是范圍的屬性。
使用newTimeSpan.outerHTML
而不是newTimeSpan.innerHTML
,它將返回跨度的HTML及其樣式。
function addTime() { const newTimeSpan = document.createElement('span'); const date = new Date(); const currentTime = `${addZero(date.getHours())} : ${addZero(date.getMinutes())} : ${addZero(date.getSeconds())}` const newTimeSpanText = document.createTextNode(currentTime); newTimeSpan.appendChild(newTimeSpanText); newTimeSpan.style.cssText = "border:solid 1px black;padding:2px;margin-right:10px;"; const liItem = document.querySelector('li'); liItem.insertAdjacentHTML('afterbegin', newTimeSpan.outerHTML) } addTime(); function addZero(n) { return n < 10 ? "0" + n : n; }
<div class="list-box"> <ul class="list"> <li class="item">item 1</li> <li class="item">item 2</li> <li class="item">item 3</li> <li class="item">item 4</li> </ul> </div>
錯誤是innerHTML而不是outerHTML:
function addTime(){ const newTimeSpan=document.createElement('span'); // ... const newTimeSpanText=document.createTextNode('currentTime'); newTimeSpan.appendChild(newTimeSpanText); newTimeSpan.style.cssText="border:solid 1px black;padding:2px;margin-right:10px;"; const liItem=document.querySelector('li'); liItem.insertAdjacentHTML('afterbegin',newTimeSpan.outerHTML); } addTime();
<div class="list-box"> <ul class="list"> <li class="item">item 1</li> <li class="item">item 2</li> <li class="item">item 3</li> <li class="item">item 4</li> </ul> </div>
使用其他人已經演示過的insertAdjacentElement
是insertAdjacentElement
方法。 您可以看一下MDN網絡文檔提供的這個項目:
這個DEMO在理解這個元素的過程中確實幫助了我。
希望它也對您有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.