[英]Why does the innerHTML setter not work correctly with <br> tags?
為什么新行在通過 innerText 獲取真實 DOM 元素時正確呈現,但在我使用某些 javascript 創建它們時沒有考慮?
這段代碼有什么問題?
const real = document.querySelector('p'); const fake = document.createElement('p'); fake.innerHTML = 'foo<br>bar'; console.log(real.innerText); // this is not similar console.log(real.textContent); console.log(real.innerHTML); console.log(fake.innerText); // to this, but why? console.log(fake.textContent); console.log(fake.innerHTML);
<p>foo<br>bar</p>
那是因為您使用的是不完整的 br 標簽。 您應該使用<br />
而不是<br >
innerHTML
setter 工作正常,問題在於需要布局信息來計算結果的innerText
方法。 由於fake
節點不在 DOM 中,因此沒有此類信息,因此它只是忽略了<br>
。 將節點插入 DOM 后,結果是相同的:
const real = document.querySelector('p'); const fake = document.createElement('p'); fake.innerHTML = 'foo<br>bar'; document.body.appendChild(fake); console.log(real.innerText); // this is not similar console.log(fake.innerText); // to this, but why?
<p>foo<br>bar</p>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.