我从第9行的php“未定义的方法DOMNodeList :: setAttribute()”中收到此错误消息。我试图在我的服务器上更改hmtl中图像的src,到目前为止这是我的代码:< / p>
<?php
if (isset($_POST['id']) && isset($_POST['name']))
{
$id = $_POST['id'];
$name = $_POST['name'];
$html = $_POST['html'];
$dom = new domDocument;
$dom->loadHTML($html);
$node = $dom->getElementsByTagName( 'img' );
$node ->setAttribute('src', 'images/' . $name);//line 9
echo $dom->saveHTML();
}
echo 'error';
exit;
//html
<div><img id="picture" src=""></div>
变量'id'是html特定行的html id,name是图像的名称,hmtl是html行。
据我所知,从研究中我选择了一个特定的hmtl行,然后我将其加载到我的DOM变量中。然后我指定元素ie:“img”然后我可以通过使用setAttribute来编辑,但是这不起作用。我只想用“图片”的ID来改变这个img'的来源。
答案 0 :(得分:2)
但是DOMNodeList没有那种方法。
getElementsByTagName
是DOMDocument类的一部分。
你不需要施放任何东西,只需调用方法:
$links = $dom->getElementsByTagName('a');
foreach ($links as $link) {
$spans = $link->getElementsByTagName('span');
}
顺便说一下,DOMElement是DOMNode的子类。如果您正在讨论DOMNodeList,那么可以使用DOMNodeList的item()方法,通过foreach循环访问这样的列表中的元素,可以是上面介绍的方法
$link_0 = $dom->getElementsByTagName('a')->item(0);
答案 1 :(得分:0)
getElementsByTagName
返回节点列表。试试吧:
$nodes = $dom->getElementsByTagName('img');
foreach ($nodes as $node) {
$node->setAttribute('src', 'images/' . $name);
}