次のような 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) 一致したすべての要素の値属性を設定します。