我正在使用DOMDocument进行DOM操作,但是在使用getElementById()方法时遇到了问题。我正在寻找一个 id 为"content"的div,但这返回 NULL:
$element = $document->getElementById('content');
if($element instanceof DOMElement)
{
// do something
}
但是,以下代码段确实返回了我正在寻找的元素:
$elements = $document->getElementsByTagName('div');
foreach($elements as $element)
{
if($element->getAttribute('id') == 'content')
{
// do something
break;
}
}
我可能忽略了一些简单的东西,但这 2 段代码看起来与我相同。(或者至少应该以相同的方式工作。第二段代码现在可以运行,但保持这种方式确实感觉不对。我想知道为什么当第二种方法成功时,第一段代码无法返回正确的元素。
我发现了这个:
通过查找标签名称,请注意,如果您的 HTML 不包含文档类型声明, 则getElementById将始终返回null。
然后查找该标签名称的 ID,它将返回 id。
源