Document::getElementById('content') 不起作用,但元素在那里
Document::getElementById('content') doesn't work, but the element is there
我正在使用 DOMDocument 进行 DOM 操作,但在使用 getElementById() 方法时遇到问题。我正在寻找 ID 为 'content' 的 div,但是这个 returns NULL:
$element = $document->getElementById('content');
if($element instanceof DOMElement)
{
// do something
}
但是,下面的代码 return 我正在寻找的元素:
$elements = $document->getElementsByTagName('div');
foreach($elements as $element)
{
if($element->getAttribute('id') == 'content')
{
// do something
break;
}
}
我可能忽略了一些简单的东西,但这 2 段代码对我来说看起来是一样的。 (或者至少应该以相同的方式工作。)第二段代码现在可以运行了,但保持这种状态确实感觉不对。我想知道为什么当第二个方法成功时,第一段代码无法 return 正确的元素。
我发现了这个:
Please note that if your HTML does not contain a doctype declaration,
then getElementById will always return null.
通过查找标签名称,然后查找该标签名称的 ID,它将 return ID。
我正在使用 DOMDocument 进行 DOM 操作,但在使用 getElementById() 方法时遇到问题。我正在寻找 ID 为 'content' 的 div,但是这个 returns NULL:
$element = $document->getElementById('content');
if($element instanceof DOMElement)
{
// do something
}
但是,下面的代码 return 我正在寻找的元素:
$elements = $document->getElementsByTagName('div');
foreach($elements as $element)
{
if($element->getAttribute('id') == 'content')
{
// do something
break;
}
}
我可能忽略了一些简单的东西,但这 2 段代码对我来说看起来是一样的。 (或者至少应该以相同的方式工作。)第二段代码现在可以运行了,但保持这种状态确实感觉不对。我想知道为什么当第二个方法成功时,第一段代码无法 return 正确的元素。
我发现了这个:
Please note that if your HTML does not contain a doctype declaration, then getElementById will always return null.
通过查找标签名称,然后查找该标签名称的 ID,它将 return ID。