DomParser()。parseFromString()方法从中读取时删除节点

时间:2019-05-26 22:12:09

标签: javascript

我正在使用DOMParser()。parseFromString方法,请注意,当您从中读取元素时,该元素也会被删除。为什么会这样?

*注意:我每次运行都会重新填充DOMParser.parseFromString变量 newNode ,因为从 newNode 中读取会清除它。

*注意:我根据DomParser parseFromString removing nodes添加了一个body标签,但这不能解决此问题。

我尝试了以下三种方法,只有 Array.from 有效,因为它创建了一个新的Array。但是,我不确定为什么 newNode 在其他示例中有所更改。

CodePen上的代码: https://codepen.io/participator/pen/zQjVmp?editors=0010

Sample:
const newNodeString = '<body><h2>I made it on the page</h2><p>What should I do now?</p><select name="whichAdventure"><option>Chill for a sec.</option><option>Explore all that this page has to offer...</option><option>Run while you still can!</option></select><p>Thanks for your advice!</p></body>';

newNode = new DOMParser().parseFromString(newNodeString, 'text/html');
div = document.createElement('div');

console.log('%cchildNodes.forEach: ', 'border-bottom: 1px solid yellow;font-weight:1000;');
newNode.body.childNodes.forEach((node, index, array) => {
    div.appendChild(node);
    console.log('length:', array.length, 'index: ', index, 'node: ', node);    
})
main.appendChild(div);

我不希望DOMParser.parseFromString变量 newNode 在读取时删除节点。我希望newNodeString中的所有4个元素都将添加到main中。

0 个答案:

没有答案