0

我有一个看起来像这样的 HTML 表格:

<table id="xp">               
        <tbody >
            <tr>
                <td>
                <input type="text" data-type="string" value="testvalue" class="text">
                </td>
                <td>
                <input type="text" data-type="string" value="" class="text">
                </td>
            </tr>

        </tbody>  
</table>

现在我想使用 phpQuery 来改变输入的值,如下所示:

require('**********/phpQuery.php');
$newsURL = "http://***********/index.php";
$newspage = file_get_contents($newsURL);

    if( $newspage )
    {           
      $pq = phpQuery::newDocument($newspage); 
                 foreach(pq('.text') as $stuffs)
                 {
                  $stuffs->val('ompalompa');
                  $this->assertEquals("ompalompa", $stuffs->val());
         }
             }

我正在使用 phpUnit assert 来查看结果,但我只是收到此错误:

//Call to undefined method DOMElement::val()

当我使用 val() 方法从第一个类元素中获取值时,如下所示:

$stuffs = pq('.text')->val();
$this->assertEquals("testvalue", $stuffs);

它工作正常并且断言通过

Time: 8 seconds, Memory: 3.25Mb
OK (1 test, 1 assertion)

正如我从 phpQuery 手册中了解到的,不带参数的 val() 只是使用选择的选择器获取第一个元素的值,而带有值的 val() 使用选择的选择器设置每个元素的值,如下所示。任何人都可以向我解释问题是我误解了文档还是我的代码中的其他内容被破坏了。

  • val() 获取第一个匹配元素的 value 属性的内容。
  • val($val) 设置每个匹配元素的 value 属性。
4

1 回答 1

1

phpQuery 的文档中,它指出当您使用foreachphp DOM 循环时会返回。这必须使用 pq() 传递回 phpQuery。

更改所有出现的$stuffstopq($stuffs)

出于好奇,我做了以下事情,因为我以前从未使用过 phpQuery:

<?
require 'phpQuery-onefile.php';
$html = "<table id=\"xp\">               
        <tbody >
            <tr>
                <td>
                <input type=\"text\" data-type=\"string\" value=\"testvalue\" class=\"text\">
                </td>
                <td>
                <input type=\"text\" data-type=\"string\" value=\"\" class=\"text\">
                </td>
            </tr>

        </tbody>  
</table>";

$pq = phpQuery::newDocument($html); 
foreach(pq('.text') as $stuffs)
{
  pq($stuffs)->val('ompalompa');
  echo pq($stuffs)->val()."</br>";
}

?>

输出是:

ompalompa
ompalompa

如果我使用:

$stuffs->val('ompalompa');

然后

Fatal error: Call to undefined method DOMElement::val() in /var/www/index.php on line 20
于 2013-05-30T09:59:23.207 回答