我想寫一個建立 HTML 元素並將子元素相互附加的函數,而不是回顯大塊 HTML 程式碼或使用 echo <<<HEREDOC
。
createLoginBar
函數會建立一個 div,我會將其附加到其他 HTML 元素到我的 createLogoutBanner
函數中。
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(); }
createLogoutBanner
函數中的 $dom->appendChild($login_bar);
行給出錯誤:
致命錯誤:未捕獲類型錯誤:DOMNode::appendChild():參數 #1 ($node) 必須是 DOMNode 類型,字串中給出。
由於錯誤狀態
DOMNode::appendChild()
期望傳遞一個DOMNode
。您的
createLoginBar
函數傳回一個字串而不是節點。嘗試以下更改:
然後您將看到錯誤
致命錯誤:未捕獲的 DOMException:錯誤文件錯誤
。這是因為您必須使用 DOMDocument 的相同父實例來建立子節點。不要在每個函數中建立一個新的 DOMDocument,而是建立一個頂級 DOMDocument 並將其傳遞給每個函數來使用。結果:
沙箱
#