php - php removechild 删除两个孩子
问题描述
就像标题说的那样,我的 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">
)
解决方案
Well I found that the html was badly formatted and a </div>
wasn't placed at the correct line, so my last <tag type="includes">
was deleted by the precedent one
推荐阅读
- javascript - Knex.js 多个 hasTables 似乎创建了推送数组
- python - AWS CDK,为 Route53 中的现有托管区域创建别名记录
- android - 将鼠标悬停在 Android Studio 中的代码完成选项上时如何查看方法文档?
- swift - 在导航控制器中测试 topviewcontroller
- java - 如何使用 Selenium 和 Java 从 html 中提取文本 2?
- c# - 如何向新添加的连接器添加标签以及如何获取 beginItem 标签和 EndItem 标签?
- python - 在 /admin/login/ 出现 OperationalError 错误没有这样的表:auth_user
- c# - 在 ASP.NET Core 中正确实现 NRT
- google-apps-script - 更改发件人姓名从电子表格创建日历邀请
- assembly - 如何在装配中进行十六进制偏移计算