Php 文档::getElementById(';内容';)不';不起作用,但元素在那里
我正在使用getElementById()方法进行DOM操作,但在使用getElementById()方法时遇到了一个问题。我正在寻找id为“content”的div,但返回NULL:Php 文档::getElementById(';内容';)不';不起作用,但元素在那里,php,dom,Php,Dom,我正在使用getElementById()方法进行DOM操作,但在使用getElementById()方法时遇到了一个问题。我正在寻找id为“content”的div,但返回NULL: $element = $document->getElementById('content'); if($element instanceof DOMElement) { // do something } 但是,以下代码确实返回了我要查找的元素: $elements = $document-&
$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;
}
}
我可能忽略了一些简单的东西,但这两段代码看起来和我一样。(或者至少应该工作相同。)第二段代码现在可以运行了,但保持这种方式确实感觉不对。我想知道当第二个方法成功时,为什么第一段代码无法返回正确的元素。我发现:
请注意,如果HTML不包含doctype声明,
然后getElementById将始终返回null
通过查找标记名和该标记名的ID,它将返回ID
我发现:
请注意,如果HTML不包含doctype声明,
然后getElementById将始终返回null
通过查找标记名和该标记名的ID,它将返回ID
在第二个示例中,您是否可以在
//do something
点验证它确实是DomeElement的实例
-可能它被报告为其他内容?@KirenSiva$document可能是新的DomDocument;是的,循环中的$element是domeElement的一个实例。在第一个代码段中,$element等于NULL。变量$document是DOMDocument的一个实例。@Sherlock我发现:“请注意,如果HTML不包含doctype声明,那么getElementById将始终返回null。”,通过查找标记名和该标记名的ID,它将返回ID。哦,真的!请加上这个作为答案!您能否在第二个示例中的//do something
点验证它确实是DomeElement的实例
——可能它被报告为其他内容?@KirenSiva$document可能是新的DomDocument;是的,循环中的$element是domeElement的一个实例。在第一个代码段中,$element等于NULL。变量$document是DOMDocument的一个实例。@Sherlock我发现:“请注意,如果HTML不包含doctype声明,那么getElementById将始终返回null。”,通过查找标记名和该标记名的ID,它将返回ID。哦,真的!请加上这个作为答案!