我无法使这种方法起作用。
我有这个 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()
which 是我在其他地方的一个函数,它返回另一个 DOMDocument 对象。
然后$oe
是我最初在传入的 html 中的元素,而 $ne 是在我的 replaceHtml 调用中创建的 DOMDocument 中的元素。我想替换$oe
为$ne
.
然后我有所有这些回声。第一个将显示从什么$dom
开始,这是正确的。
下一个将向您展示原始元素(我要替换的元素),这是正确的。注意 id 以 {{ALViewElement_.
接下来向您展示我想要替换原始元素的元素。请注意,除了 id 不是以 ALViewElement 开头之外,它就像是一样的东西。不,我不是在寻找说我可以很容易地用 DOMDocument 更改 id 的答案,因为这不是我在这里寻找的。
下一个调用显示原始元素的 parentNode。它只是一个 html 片段,所以实际上没有 parentNode。这会打印出来。注意 {{ALViewElement_ id。
然后我打电话给替换孩子。
然后接下来的两个回声什么也不打印。replaceChild 没有用,我失去了一切。
为什么这不起作用?我错过了什么?
编辑:忘记了 HTML。
我把它们放在一个 jsFiddle 中,所以很容易看到:https ://jsfiddle.net/jDPTC/