我需要删除带有特定 src
的某些图像:
http://ukn.cs-mtc.com/wp-content/plugins/download-monitor/page-addon/thumbnail.gif
有没有办法删除整个<img>
用 JavaScript 标记?
最佳答案
我有一些空闲时间(并且有一种奇怪的冲动想写一些 JavaScript...),所以我想我会提供这种函数式方法:
function removeNeighbour(el, elType) {
if (!el) {
return false;
}
else if (el.nextElementSibling) {
var nxt = el.nextElementSibling;
}
else {
var nxt = el.nextSibling;
while (nxt.nodeType !== 1 && nxt.nextSibling) {
nxt = nxt.nextSibling;
}
}
if (elType && nxt.tagName.toLowerCase() == elType.toLowerCase()) {
nxt.parentNode.removeChild(nxt);
}
else if (!elType) {
nxt.parentNode.removeChild(nxt);
}
}
function clearElsWithAttrEquals(el, attr, val, andNeighbour, neighbourType) {
if (!el || !attr || !val) {
return false;
}
else if (document.querySelectorAll) {
var matchingElems = document.querySelectorAll(el + '[' + attr + '="' + val + '"]'),
neighbourType = neighbourType || '';
for (var i = matchingElems.length - 1; i >= 0; i--) {
if (andNeighbour === true) {
removeNeighbour(matchingElems[i], neighbourType);
}
matchingElems[i].parentNode.removeChild(matchingElems[i]);
}
}
else {
var matchingElems = document.getElementsByTagName(el),
len = (matchingElems.length - 1);
for (var i = len; i >= 0; i--) {
if (matchingElems[i][attr] == val) {
matchingElems[i].parentNode.removeChild(matchingElems[i]);
}
}
}
}
clearElsWithAttrEquals('img', 'src', 'http://ukn.cs-mtc.com/wp-content/plugins/download-monitor/page-addon/thumbnail.gif', true, 'p');
clearElsWithAttrEquals()
函数的快速指南(也是我可能为 编写的唯一文档):
clearElsWithAttrEquals(el, attr, val[, andNeighbour[, neighbourType]])
;
el
: (string) 标识元素类型('img','p','span'...)。attr
: (string) 标识您要搜索的属性('id'、'src' 等...)val
: (string) 只有当值完全等于字符串时才会匹配andNeighbour
: (Boolean, optional) 你也想移除相邻元素吗?传递true
(如果是)或false
(如果不是)。neighborType
: (string, optional) 仅当邻居是这种元素类型时才删除邻居 ('div','hr' ,'跨度'等);如果省略,则下一个同级元素将被删除不管它的类型。
引用资料:
关于javascript - 通过 src 删除图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662418/