将DOM元素数组转为字符串时得到对象标识而非HTML内容的问题
问题分析与解决
你得到的array2是DOM元素对象数组,不是字符串数组。直接调用join("")时,JavaScript会把每个DOM元素转为默认的字符串表示形式,也就是[object HTMLXXXElement],这就是你没考虑到的核心点。
两种可行的解决方式
方式1:用outerHTML获取完整元素HTML
outerHTML属性会返回当前DOM元素本身及其所有子内容的完整HTML代码,完全匹配你的预期需求。修改代码如下:
let contentString = array2.map(el => el.outerHTML).join("");
方式2:用innerHTML(仅适用于获取元素内部内容)
如果只需要元素内部的HTML代码(不包含元素自身的标签),可以用innerHTML,但你的预期结果需要保留<p>和<ul>标签,所以这个方式不适用,仅作补充参考:
// 示例:仅获取元素内部内容,不符合你的需求 let innerContent = array2.map(el => el.innerHTML).join("");
额外小提示
你的选择器body:not(first-child) > *存在语法问题,若要排除body的第一个子元素,正确写法应为body > :not(:first-child),不过这和当前字符串转换的问题无关,只是顺带提醒。
内容的提问来源于stack exchange,提问作者Smeagol2
相关产品推荐
相关产品推荐

