Document::getElementById('content') 不起作用,但元素就在那里


Document::getElementById('content') doesn't work, but the element is there

我正在使用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。