如何使用getElementById

时间:2012-03-08 10:43:06

标签: php dom

我想获取tds中的值。我可以通过getElementsByTagName来实现它,但我无法通过使用getElementById来管理它。

HTML可能如下所示:

<table id="myid">
<tr>
<td>value1</td>
<td>value2</td>
</tr>
<tr>
<td>value1</td>
<td>value2</td>
</tr>
</table>

用于访问值的php是:

<?PHP
$dom = new DOMDocument();
$dom->loadHTMLfile('http://remoteDomain/thispage.html');
$table=$dom->getElementById('myid');

    foreach($table->getElementsByTagName('tr') as  $key =>$tr){
       $tr->getElementsByTagName('td')->item(0)->nodeValue;
    }
?>

修改

我收到了错误: 致命错误:在...中的非对象上调用成员函数getElementsByTagName()

EDIT2

Php信息:

启用DOM / XML
DOM / XML API Version 20031129
libxml版本2.7.3

操作系统:Windows

4 个答案:

答案 0 :(得分:2)

问题是getElementById需要DOCTYPE。如果你添加

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

在文件的开头,它应该工作(你还应该添加html和body标签)。

修改:您还需要在加载HTML文件之前添加$dom->validateOnParse = true;

这显然是DomDocument课程的“功能”,请参阅http://php.net/manual/en/domdocument.getelementbyid.php(评论)

答案 1 :(得分:1)

您的id属性需要引号

<table id="myid">

答案 2 :(得分:0)

getElementById顾名思义,只有在您定位的元素实际上具有id时才有效。

答案 3 :(得分:0)

据我了解,您希望在foreach getElementById中使用,并且您的代码正在运行。

正如可以看到的那样,名称getElement[S]ByTagNamegetElementById之间存在差异。

id 的定义可以说是页面中元素的唯一标识符,因此只允许一个 id (唯一)值保留在单个页面上并且此值不能分配给另一个元素id。如果你有多个具有相同id值的元素,那就错了(我认为是HTML 4或XHTML 1.0)。

您使用的方式看起来有效。

修改

在这种情况下,您可能在此处有一个anwser:Same problem already solved