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

She*_*ock 1 php dom

我正在使用DOMDocument进行DOM操作,但是我遇到了使用getElementById()方法的问题.我正在寻找id为'content'的div,但这会返回NULL:

$element = $document->getElementById('content');

if($element instanceof DOMElement)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

但是,下面的代码确实返回了我正在寻找的元素:

$elements = $document->getElementsByTagName('div'); 
foreach($elements as $element)
    {
        if($element->getAttribute('id') == 'content')
        {
                // do something
                break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我可能会忽略一些简单的东西,但这两段代码看起来与我完全相同.(或者至少应该完全相同.)第二段代码现在可以运行,但保持这种方式确实是错误的.我想知道当第二个方法成功时,为什么第一段代码无法返回正确的元素.

Nea*_*eat 5

我找到了这个:

请注意,如果您的HTML不包含doctype声明,则getElementById将始终返回null.

通过查找标记名,然后查找该标记名称的ID,它将返回id.

资源