jquery - 检查节点类型的图片/Alt 属性

标签 jquery html dom

我得到了一个遍历所有 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 属性。

最佳答案

一旦确定它不是文本节点,只需使用元素的 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>

关于jquery - 检查节点类型的图片/Alt 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60356328/

相关文章:

asp.net - 在 ASP.NET MVC 站点中,JQuery 代码会放在哪里?

javascript - Jquery 删除输出中的 head 和 body 标签

javascript - jQuery 未定义 twitter bootstrap

javascript - GetElementsByTagName(标签).length

Javascript选择标签内的内容

javascript - 按特定子级对 DOM 元素进行排序(无 JQuery)

javascript - 这段 JavaScript 代码可以用 jQuery 重写吗?

jquery - 创建一个带有表格的 div 和表格中的图像的正确解决方法是什么?

html - 带有 Bootstrap 的缩略图网格

html - 标准化页面对齐时遇到问题