1

我有一个用于生成商店的 php 脚本。

所以,首先我用 dom 文档检索我的 html 页面:

$oPage = new webHTML("boutique_panier_HTML");
$oInter = $oPage->getElementById("inter");

webHTML() 只是一个自定义的 DomDocument 类。所以,我检索了我的主要 div(inter),并且我之前对这个 div 做了一些处理return $oPage->saveHTML();

所以,就目前而言,没关系。

我需要加载另一个页面,检索一个元素(表单)并将这个元素放在我的$oInter.

所以,就在之前return $oPage->saveHTML();,我这样做:

$oPage2 = new webHTML("formulaire_bon_commande");
$oInter2 = $oPage2->getElementsByTagName("form");
$oInter->appendChild($oInter2);

因此,我加载页面“formulaire_bon_commande”,检索我的元素表单,并尝试将此元素附加到我的 $oInter div。

有了这段代码,我只有一个白页......没有效果。有任何想法吗 ?

4

1 回答 1

2

方法getElementsByTagName返回DOMNodeListappendChild期望DOMNode,所以你必须迭代$oInter2

$oInter2 = $oPage2->getElementsByTagName("form");
foreach ($oInter2 as $el){
   $node = $oPage->importNode($el, true);
   $oInter->appendChild($node);
}

例子:

$oPage = new DOMDocument();
$oPage->loadHTML('<html><p id="inter"></p></html>');
$oInter = $oPage->getElementById("inter");


$oPage2 = new DOMDocument();
$oPage2->loadHTML('<html><form><button></button></form></html>');
$oInter2 = $oPage2->getElementsByTagName("form");
foreach($oInter2 as $el) {
    $node = $oPage->importNode($el, true);
    $oInter->appendChild($node);
}

echo $oPage->saveHTML();

输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p id="inter"><form><button></button></form></p></body></html>
于 2013-07-11T09:13:03.760 回答