我得到了一个递归函数,它遍历所有HTML子节点。
是否有一种简单的方法来检查当前元素是否是带有element.nodeType的图像?所以我可以用DOM来处理这个元素。
这里是一个代码示例:
`
replaceText(document.body)
function replaceText(element){
if(element.hasChildNodes()){
element.childNodes.forEach(replaceText)
} else if(element.nodeType === Text.TEXT_NODE){
//Do Something
}`
就这样,也适用于图片,尤其是图片的alt属性。
发布于 2020-02-22 20:29:07
只要确定元素不是文本节点,只需使用元素的nodeName属性来检查它是否是图像("IMG")。
replaceText(document.body)
function replaceText(element){
if(element.hasChildNodes()){
element.childNodes.forEach(replaceText)
} else if(element.nodeType === Node.TEXT_NODE){
console.log("Text Found! textContent: ",element.textContent)
}
else if(element.nodeName = "IMG"){
console.log("Image Found! Alt: ",element.alt)
}
}<html>
<body>
<p>this is text</p>
<div>this is an element</div>
<img src="https://placehold.it/22" alt="i am an image">
</body>
</html>
要获得图像的alt属性,只需在代码中使用element.alt即可。
若要删除图像中的文本与正则表达式匹配,只需测试要测试的每个属性:
function replaceText(element){
if(element.hasChildNodes()){
element.childNodes.forEach(replaceText)
} else if(element.nodeType === Node.TEXT_NODE){
//console.log("Text Found! textContent: ",element.textContent)
}
else if(element.nodeName = "IMG"){
console.log("Image Found! Alt: ",element.alt)
let re = /Wendler/gi
if((element.alt != undefined &&element.alt.match(re)) || (element.src != undefined &&element.src.match(re)) || (element.title != undefined &&element.title.match(re))){
element.remove()
}
}
}<html>
<body>
<p>this is text</p>
<div>this is an element</div>
<img src="https://placehold.it/22" alt="i am an image">
<img src="https://placehold.it/25" alt="i am an image containing the word wendLer somewhere">
<img src="https://placehold.it/25?text=wendler" alt="i am an image">
<button onclick="replaceText(document.body)">Click to remove images</button>
</body>
</html>
https://stackoverflow.com/questions/60356328
复制相似问题