设置 DOM元素的节点值:错误:试图获取非对象的属性


Setting nodeValue of a DOMelement : error :Trying to get property of non-object

运行此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如果这不是正确的方法,我该如何设置必须提取其 ID 的标签文本。

这是我的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>

谢谢

根据官方文档,getElementById() 返回一个 DOMElement ,它扩展了DOMNode,而又具有您尝试更改的$nodeValue字段。DOMNode不是DOMNodeList,所以它既没有$length域,也没有item()方法。因此,您不应该对该元素调用item(),您可以直接操作其$nodeValue。要找出是否存在此类元素,只需测试与NULL相等的getElementById()结果(或使用if ($element)作为简写(。完整的代码如下所示:

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

来源:

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