[英]javascript remove no id/class images from no id/class DIV element
我試圖通過創建一個使用一些javascript代碼的油脂猴子腳本來“調整”一些站點(不是我的站點)以滿足我的需要。 我已經搜索了stackoverflow和其他地方,但找不到該特定問題的解決方案。 問題是DIV元素內有一些鏈接沒有ID或類,因此我不能使用'getElement(s)By'(Id,ClassName或TagName)。 而且我不能使用getElementsByTagName,因為我不想弄清楚如何刪除這些特定的圖像,因為我不想從頁面的中刪除所有圖像(為了方便起見,文檔中的第一個IMG必須保持可見) 。 在這里,我簡化了頁面源代碼:
<body class="someclass">
<div id="instructions">
<img src="http://somesite.com/s7ad7sg/ds67sgs/2ys7s.jpg" alt="resized image">
</div>
<form id="some_form_id">
<div id="not_important"></div>
<div id="now_what">
<div=id="here_we_go">
<div>(some content here)</div>
<div>
some random text which is not between any tags
<img src="http://somesite.com/subfolder/subfolder/26256.jpg" alt="resized image2">
<img src="http://somesite.com/subfolder/subfolder/33633.jpg" alt="resized image2">
<img src="http://somesite.com/subfolder/subfolder/98461.jpg" alt="resized image2">
<img src="http://somesite.com/subfolder/subfolder/38746.jpg" alt="resized image2">
<img src="http://somesite.com/subfolder/subfolder/08456.jpg" alt="resized image2">
</div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
</form>
</body>
^因此,我需要刪除以下內容:
26256.jpg 33633.jpg 98461.jpg 38746.jpg 08456.jpg
^當他們沒有任何類別或ID且其父級DIV沒有任何類別或ID時,如何刪除它們?
任何人都知道如何通過使用javascript來做到這一點(請注意,(位於代碼頂部的)第一張圖片必須保持可見狀態。另外還有一段文字(該文字不在內部)
標簽)上方的這5張圖片,上面寫着“某些隨機文本,不在任何標簽之間”。 該文本需要保留,因此我不能暗示刪除包含所有內容的整個DIV。 無名DIV只需要保留該文本即可。
提前致謝!
(同樣,我不擁有該網站,因此無法通過對其進行編輯來更改html源代碼)
編輯:
謝謝大家對我的幫助! 我已經測試了您的所有建議。 也許是因為我只是菜鳥,但是只有一段代碼有效。 這是某些性能提供的第二種方法:
document.head.appendChild(document.createElement('style'))
.textContent = '#here_we_go img { display: none; }';
^所以一個人工作了。 我不知道為什么第一種方法不起作用。
我也一直在Google上搜索,並且找到了一些我“調整”並測試過的代碼示例,因此該示例也可以工作:
var imgs = document.querySelectorAll('#here_we_go img'), i;
for (i = 0; i < imgs.length; ++i) {
imgs[i].style.display = "none";
}
getElementsBy *方法返回HTMLCollections,這可能很難使用。 考慮使用querySelectorAll,它返回一個靜態NodeList -與HTMLCollection不同,它可以直接進行迭代,在進行迭代時不會更改,並且更加靈活。
像這樣:
document.querySelectorAll('#here_we_go img')
.forEach((img) => img.remove());
這將選擇所有here_we_go
div的最終img
,並將它們從DOM中刪除。
另一種方法是用CSS隱藏它們:
document.head.appendChild(document.createElement('style'))
.textContent = '#here_we_go img { display: none; }';
使用document.querySelectorAll
並為這些圖像傳入選擇器, document.querySelectorAll('#here_we_go>div>img')
首先通過此獲取圖像src
var someimage = document.getElementById('here_we_go');
var myimg = someimage.getElementsByTagName('img')[0];
var mysrc = myimg.src;
現在,如果mysrc == 26256.jpg
則使該圖像不顯示。
在jQuery中:
$("img:nth-of-type(2)").remove();
$("img:nth-of-type(3)").remove();
$("img:nth-of-type(4)").remove();
$("img:nth-of-type(5)").remove();
$("img:nth-of-type(6)").remove();
使用id定位最接近的父元素,並使用querySelectorAll
獲取所有img
forEach
進行迭代並remove
以刪除該元素
let getImgs = document.getElementById('here_we_go') .querySelectorAll('img') .forEach(function(item) { item.remove(); })
<body class="someclass"> <div id="instructions"> <img src="http://somesite.com/s7ad7sg/ds67sgs/2ys7s.jpg" alt="resized image"> </div> <form id="some_form_id"> <div id="not_important"></div> <div id="now_what"> <div id="here_we_go"> <div>(some content here)</div> <div> some random text which is not between any tags <img src="http://somesite.com/subfolder/subfolder/26256.jpg" alt="resized image2"> <img src="http://somesite.com/subfolder/subfolder/33633.jpg" alt="resized image2"> <img src="http://somesite.com/subfolder/subfolder/98461.jpg" alt="resized image2"> <img src="http://somesite.com/subfolder/subfolder/38746.jpg" alt="resized image2"> <img src="http://somesite.com/subfolder/subfolder/08456.jpg" alt="resized image2"> </div> <div></div> <div></div> <div></div> <div></div> </div> </div> </form> </body>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.