Javascript I';我创建了一个DOM元素数组,选择了一个img标记,然后选择了一系列的p标记,如何获得p';来自img的s和src链接?

Javascript I';我创建了一个DOM元素数组,选择了一个img标记,然后选择了一系列的p标记,如何获得p';来自img的s和src链接?,javascript,arrays,node.js,dom,domdocument,Javascript,Arrays,Node.js,Dom,Domdocument,这就是我创建数组的方式:const textData=array.from(document.querySelectorAll('.product image,.product detail>p')) 数组内容是一个img标记,后面跟着大量的p标记,根据页面上有多少项,更多img标记后面跟着更多的p标记,我想映射或循环元素,根据元素是什么标记,在数组中用其innerHTML(对于p标记)或src链接(img标记)替换它。如何在节点中实现这一点?我不知道如何循环并确定标记类型以及执行指定的操作。您

这就是我创建数组的方式:
const textData=array.from(document.querySelectorAll('.product image,.product detail>p'))


数组内容是一个img标记,后面跟着大量的p标记,根据页面上有多少项,更多img标记后面跟着更多的p标记,我想映射或循环元素,根据元素是什么标记,在数组中用其innerHTML(对于p标记)或src链接(img标记)替换它。如何在节点中实现这一点?我不知道如何循环并确定标记类型以及执行指定的操作。

您可以使用映射和标记名

textData.map((element) => {
  if (element.tagName === 'IMG') return element.src;
  if (element.tagName === 'P') return element.innerHTML;
  return '';
})

可以按如下方式映射元素数组:

const textData=数组
.from(document.querySelectorAll('.product image,.product detail>p'))
.map(元素=>{
如果(element.tagName==='IMG')返回element.src
如果(element.tagName=='P')返回element.innerHTML
返回空
})
如果要在数组中使用筛选器null:

const textData=数组
.from(document.querySelectorAll('.product image,.product detail>p'))
.map(元素=>{
如果(element.tagName==='IMG')返回element.src
如果(element.tagName=='P')返回element.innerHTML
返回空
})
.filter(项=>项!==null)
下面是上述代码的示例:


它在当前页面的devtools中的控制台面板之外执行:

选择器的用途是什么?不可返回的?抱歉,可以忽略。我编辑了这个问题。在运行代码后,您能发布一个
textData
内容的示例吗?您好,代码中有一个错误,否则这是正确的。这就是为什么它一开始不起作用。你有两个HTML的L。再次感谢。基本上与第一个相同的结果和代码:['','','','','','','','','','','','',''],只需尝试excute
console.log(document.querySelectorAll('.product image,.product detail>p'))
查看您将得到什么?您好,这段代码对我有用,谢谢您的提交,我会将此标记为正确答案,但其他用户先发布。没关系。但你要知道,我并没有否决这个问题。@TrevorO'Farrell至少把答案标记为有用。