设置DOMelement的nodeValue:error:尝试获取非对象的属性

时间:2014-07-17 22:42:19

标签: php dom

运行这个php脚本时:

$doc = new DOMDocument();
    $doc->loadHTMLFile("some_url.html");
    $ele1 = $doc->getElementById ( "coupon" );
    if($ele1->length){
    $doc->getElementById ( "coupon" )->item(0)->nodeValue =$result["affiliate_name"] ;}

我得到:Trying to get property of non-object在最后一行 如果它不是正确的方法,我怎样才能设置我必须提取其标识的标签文本。

这是我的some_url.html:

  <div class="panel panel-success">
    <div class="panel-heading">
      <h3 id="coupon" class="panel-title">Coupon name 1</h3>
    </div>
<p id="coupon_id" hidden>coupon id</p>
    <div id="counter-up" class="panel-body">
      0
    </div>
  </div>

谢谢

1 个答案:

答案 0 :(得分:1)

根据官方文档,getElementById()会返回一个DOMElement,其中DOMNode会延伸$nodeValue,而DOMNode字段会尝试更改DOMNodeList字段。 $length不是item(),因此它既没有item()字段也没有$nodeValue方法。因此,您不应该在该元素上调用getElementById(),您可以直接操作其NULL。要确定此元素是否存在,只需测试if ($element)的结果是否与$doc = new DOMDocument(); $doc->loadHTMLFile("some_url.html"); $ele1 = $doc->getElementById("coupon"); if ($ele1) $ele1->nodeValue = $result["affiliate_name"]; 相等(或使用{{1}}作为简写)。完整代码如下所示:

{{1}}

来源:
http://pl1.php.net/manual/en/domdocument.getelementbyid.php
http://pl1.php.net/manual/en/class.domelement.php
http://pl1.php.net/manual/en/class.domnode.php