我无法使用此方法。
我有这个PHP代码:
$dom = new \DOMDocument();
$dom->loadHTML($this->_html);
$newD = $viewElement->replaceHtml();
$oe = $dom->getElementById("{{ALViewElement_resume}}");
$ne = $newD->getElementById("resume");
echo $dom->saveHTML();
echo $dom->saveHTML($oe);
echo $newD->saveHTML($ne);
echo $dom->saveHtml($oe->parentNode);
$oe->parentNode->replaceChild($ne, $oe);
echo $dom->saveHTML($ne);
echo $dom->saveHTML();
所以我创建了一个DomDocument,并加载了一些html。然后我调用$ viewElement-> replaceHtml()这是我在其他地方返回另一个DomDocument对象的函数。
然后$ oe是我在html中传递的元素,$ ne是在我的replaceHtml调用中创建的DomDocument中的元素。我想用$ ne替换$ o。
然后我有了所有这些回声。第一个将显示开始的$ dom,这是正确的。
下一个将显示原始元素(我要替换的元素),这是正确的。请注意,id以{{ALViewElement _。
开头接下来将向您展示我想要用原始元素替换的元素。请注意它是相同的,除了id不以ALViewElement开头。 不,我不是在寻找答案,说我可以很容易地用DomDocument更改id,因为那不是我在这里寻找的。 em> < / p>
下一个调用显示原始元素的parentNode。它只是一个html片段,所以实际上没有parentNode。这打印自己。请注意{{ALViewElement_ id。
然后我调用替换孩子。
然后接下来的两个回声什么都没打印出来。 replaceChild没有工作,我失去了一切。
为什么这不起作用?我错过了什么?
编辑:忘记了HTML。我把它们放在jsFiddle中,所以很容易看到:http://jsfiddle.net/jDPTC/
答案 0 :(得分:1)
您应首先克隆新节点,例如
$oe->parentNode->replaceChild($ne->cloneNode(true), $oe);