我想洗掉頁面中除了我想要的元素之外的所有元素。我正在使用 chrome 檢查元素控制臺。
所以我在想這個方法:
document.body.innerHTML = texts.innerHTML;
我嘗試了下面的代碼,但它只將文本的第一個元素附加到 body.innerHTML。
var texts = document.getElementsByClassName('HoXoMd D1wxyf G4EHhc');
for(let text of texts){
document.body.innerHTML = text.innerHTML;
}
我嘗試了下面的代碼,它確實附加但沒有更改網站,它僅在您列印時附加在控制臺上:
var texts = document.getElementsByClassName('HoXoMd D1wxyf G4EHhc');
for(let text of texts){
document.body.innerHTML = text.innerHTML;
}
我是 javascript 新手 謝謝
uj5u.com熱心網友回復:
innerHTML很少是修改現有檔案的好工具。此外,在迭代實時集合期間修改檔案可能會產生意想不到的結果。
您可以收集除所需元素之外的所有元素,然后將它們從檔案中洗掉,如下所示:
const texts = document.body.querySelectorAll('*:not(.HoXoMd.D1wxyf.G4EHhc)');
for (let text of texts) {
text.remove();
}
<p>Paragraph 1</p>
<p class="HoXoMd D1wxyf G4EHhc">Remains 1</p>
<p class="HoXoMd D1wxyf G4EHhc">Remains 2</p>
<p class="HoXoMd D1wxyf G4EHhc">Remains 3</p>
<p class="HoXoMd">Paragraph 2</p>
通用*選擇器收集 中的所有元素document.body,:not偽類排除與傳遞給的選擇器匹配的元素:not。NodeListelement.querySelectorAll回傳是靜態的,您可以在回圈中洗掉元素,而不會弄亂活動串列會導致的混亂。
值得注意的是,使用element.querySelectorAll是至關重要的,如果使用document.querySelectorAll,檔案中的所有元素都將被洗掉,包括headand body,并且頁面上不會留下任何內容。
uj5u.com熱心網友回復:
您的第二個代碼片段很好,您只是缺少一件事:您必須在選擇要保留的元素后清除所有 html,然后再次開始將它們添加到您的 DOM。
// use querySelectorAll instead
var texts = document.querySelectorAll('.keep');
// clear all html
document.body.innerHTML = ''; // <-
// add all the html you want back to the dom
for (const text of texts)
document.body.appendChild(text)
<div class="keep">keep this</div>
<div>don't care about this</div>
<div>don't care about this</div>
<div class="keep">keep this too</div>
<div>don't care about this</div>
<div class="keep">keep this also</div>
你可以改變.keep任何你想要的課程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/455009.html
標籤:javascript
