Maison  >  Questions et réponses  >  le corps du texte

Comment écrire des fonctions pour créer des éléments HTML AppendChild en PHP ?

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.

P粉814160988P粉814160988186 Il y a quelques jours341

répondre à tous(1)je répondrai

  • P粉504080992

    P粉5040809922024-03-31 11:14:36

    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 :

    function createLoginBar() {
        $dom = new DOMDocument();
        $login_bar = $dom->createElement('div');
        $login_bar->setAttribute("id", "login_bar");
        $dom->appendChild($login_bar);
        return $dom; //->saveHTML();
    }
    

    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.

    function createLoginBar(DOMDocument $dom):DOMNode 
    {
        $login_bar = $dom->createElement('div');
        // the following line will cause invalid html if this function is called more than once
        $login_bar->setAttribute("id", "login_bar");
    
        return $login_bar;
    }
    function createBtn(DOMDocument $dom, string $value):DOMNode 
    {
        $btn = $dom->createElement('button', $value);
        $btn->setAttribute("class", "widget");
    
        return $btn;
    }
    
    $dom = new DOMDocument();
    $login_bar = createLoginBar($dom);
    $login_btn = createBtn($dom, 'login');
    
    $login_bar->appendChild($login_btn);
    
    $dom->appendChild($login_bar);
    
    echo $dom->saveHTML();
    

    Résultat :

    Bac à sable

    répondre
    0
  • Annulerrépondre