Je souhaite écrire des fonctions qui créent des éléments HTML et ajoutent des éléments enfants les uns aux autres, plutôt que de faire écho à des morceaux de code HTML ou d'utiliser echo <<<HEREDOC
.
createLoginBar
函数将创建一个 div,我会将其附加到其他 HTML 元素到我的 createLogoutBanner
en fonction.
function createLoginBar() { $dom = new DOMDocument(); $login_bar = $dom->createElement('div'); $login_bar->setAttribute("id", "login_bar"); $dom->appendChild($login_bar); return $dom->saveHTML(); } function createLogoutBanner() { $dom = new DOMDocument(); $login_bar = createLoginBar(); $login_flex = createBlankLoginFlex(); $banner_login_form = createBannerLoginForm(); $login_message_flex = createLoginMessageFlex(); $nonmember_signup_flex = createNonSignupFlex(); $not_a_member_form = createNotAMemberForm(); $dom->appendChild($login_bar); //This line gives an error $login_bar->appendChild($login_flex); $login_flex->appendChild($banner_login_form); $login_bar->appendChild($login_message_flex); $login_bar->appendChild($nonmember_signup_flex); $nonmember_signup_flex->appendChild($not_a_member_form); return $dom->saveHTML(); }La ligne
createLogoutBanner
函数中的 $dom->appendChild($login_bar);
donne l'erreur :
Erreur fatale : Uncaught TypeError : DOMNode::appendChild() : le paramètre n°1 ($node) doit être de type DOMNode, donné sous forme de chaîne.
En raison d'un état d'erreur
DOMNode::appendChild()
期望传递一个DOMNode
.Votre fonction
createLoginBar
renvoie une chaîne au lieu d'un nœud.Essayez les modifications suivantes :
Ensuite, vous verrez l'erreur
致命错误:未捕获的 DOMException:错误文档错误
. En effet, vous devez utiliser la même instance parent du DOMDocument pour créer les nœuds enfants. Au lieu de créer un nouveau DOMDocument dans chaque fonction, créez un DOMDocument de niveau supérieur et transmettez-le à chaque fonction à utiliser.Résultat :
Bac à sable