Ich möchte Funktionen schreiben, die HTML-Elemente erstellen und untergeordnete Elemente aneinander anhängen, anstatt Teile des HTML-Codes wiederzugeben oder echo <<<HEREDOC
zu verwenden.
createLoginBar
函数将创建一个 div,我会将其附加到其他 HTML 元素到我的 createLogoutBanner
in Funktion.
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(); }Die Zeile
createLogoutBanner
函数中的 $dom->appendChild($login_bar);
gibt den Fehler aus:
Schwerwiegender Fehler: Uncaught TypeError: DOMNode::appendChild(): Parameter #1 ($node) muss vom Typ DOMNode sein, angegeben als String.
由于错误状态
DOMNode::appendChild()
期望传递一个DOMNode
。您的
createLoginBar
函数返回一个字符串而不是节点。尝试以下更改:
然后您将看到错误
致命错误:未捕获的 DOMException:错误文档错误
。这是因为您必须使用 DOMDocument 的相同父实例来创建子节点。不要在每个函数中创建一个新的 DOMDocument,而是创建一个顶级 DOMDocument 并将其传递给每个函数来使用。结果:
沙箱