繁体   English   中英

php removechild 删除两个孩子

[英]php removechild remove two childs

就像标题说的,我的 php removeChild 函数有问题

我有这个脚本在 html 标签上循环

$list = $dom->getElementsByTagName("tag");

//charge et supprimme les tags
while($lst = $list->item(0)) {

    $tgs = ucfirst($lst->getAttribute("type"));
    array_push($test, $tgs);
    $tg = new $tgs($dom, $lst, false);

    $tg->render();
    var_dump("--------- 1 ---------");
    for ($i=0; $i < $list->count(); $i++) {
        var_dump($list->item($i)->getAttribute("type"));
    }

    // var_dump($list[0]->parentNode->nodeName);

    $lst->parentNode->removeChild($lst); //this line

    var_dump("--------- 2 ---------");
    for ($i=0; $i < $list->count(); $i++) {
        var_dump($list->item($i)->getAttribute("type"));
    }
    $list = $dom->getElementsByTagName("tag");
}

和这个 html 文件

<!DOCTYPE html>
<html lang="fr">

<head>
</head>

<body>
    <header>
        <tag type="includes" file="header" />
    </header>
    <main class="test container">
        <div class="bloc_principal">
            <div class="cover-black">
                <div class="bloc_principal_titre">
                    <h1>L'actualité de nos campus...</h1>
                </div>
                <div class="test2">
                    <h2 id="titre-home">Ceci est un magnifique titre</h2>
                    <p class="p-home">
                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
                        do eiusmod tempor incididunt ut labore et dolore magna aliqua.
                        Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
                        nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit
                        in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
                        cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
                    </p>
                    <div class="bloc-plus">
                        En savoir plus
                    </div>
                </div>
            </div>
        </div>
        </div>
        <h3 id="titre-between">Articles récents</h3>
        <div class="row articles">
            <tag type="loop" for="posts" limit="6">
                <div class="col-12 col-md-6 col-lg-4">
                    <div class="article column-categorie">
                        <h4 class="title">
                            <loop column="title" />
                        </h4>
                        <div class="etiquettes">
                            <span class="cat">
                                <loop column="categorie" />
                            </span>
                            <span class="date">
                                <loop column="date" />
                            </span>
                        </div>
                        <div class="text">
                            <loop column="content" />
                        </p>
                    </div>
                </div>
            </tag>
        </div>
    </main>
    <footer>
        <tag type="includes" file="footer" />
    </footer>
</body>

</html>

大部分工作正常。

但由于某种原因,函数$lst->parentNode->removeChild($lst); 删除两者

  • <tag type="loop">
  • <footer><tag type="includes"></footer>

那是我最后一个存在的孩子,它应该只删除<tag type="loop">

当我 var_dump $lst->parentNode 我得到正确的父级来删除我的标签( <div class="row articles"> rowarticles <div class="row articles">

好吧,我发现 html 格式错误并且</div>没有放在正确的行,所以我的最后一个<tag type="includes">被先例删除了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM