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

时间:2015-01-09 10:37:54

标签: php dom

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

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

1 个答案:

答案 0 :(得分:5)

我发现了这个:

  

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

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

Source